问题描述
我是C语言的新手(使用C语言已有2天),并且在过去的30个小时里,我一直在学习教程和一些随机的youtube视频,但是对于我来说,我不知道该怎么做在命令行中输入的字符串上输入一个名称。
./filename.c F22 G2
我知道argv
中的第二个参数,即argv[1]
包含字符串F22
,而argv[2]
包含G2
。我不想将这两个字符串重命名为str1
和str2
。
当我尝试打印str1
时,我得到很多奇怪的字符,而不是F22
。我搞砸了什么?请参阅下面的代码。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main (int argc,char* argv[])
{
char* str1[] = {argv[1]};
char* str2[] = {argv[2]};
printf("%s\n",str1);
return 0;
}
感谢您的帮助。
解决方法
定义
char* str1[] = {argv[1]};
将str1
定义为一个单个char *
元素的数组,该单个元素为argv[1]
。
重要的部分是str1
不是字符串,而是字符串的数组。
要定义字符串,您需要删除花括号(方括号和花括号):
char* str1 = argv[1]; // Define str1 as an alias for argv[1]
当然,您可以直接使用argv[1]
:
printf("%s\n",argv[1]);
对于不应该修改的字符串,建议const
对其进行限定:
const char* str1 = argv[1]; // Define str1 as an alias for argv[1]