使用带参数的Strcmp

使用带参数的Strcmp,c,file,pointers,stdin,argv,C,File,Pointers,Stdin,Argv,我试图将标志'-g'作为参数传递,我希望代码识别'-'并将其打印为无效标志。这似乎不起作用。我该怎么办?argv[I][0]是字符串argv[I]中的第一个字符 使用if(argv[i][0]='-')或if(strncmp(argv[i],“-”,1)==0)argv[i][0]是字符串argv[i]中的第一个字符 只使用if(argv[i][0]='-')或if(strncmp(argv[i],“-”,1)==0)表达式&(argv[i][0])完全等同于argv[i]。不能以这种方式形成字

我试图将标志'-g'作为参数传递,我希望代码识别'-'并将其打印为无效标志。这似乎不起作用。我该怎么办?

argv[I][0]是字符串argv[I]中的第一个字符


使用
if(argv[i][0]='-')
if(strncmp(argv[i],“-”,1)==0)
argv[i][0]是字符串argv[i]中的第一个字符

只使用
if(argv[i][0]='-')
if(strncmp(argv[i],“-”,1)==0)
表达式
&(argv[i][0])
完全等同于
argv[i]
。不能以这种方式形成字符串的前导子字符串。对于您的特定任务,通过
=
操作符执行单个-
char
比较会更简单:

if (strcmp(&(argv[i][0]),"-")==0){
fprintf(stderr,"invalid option: '-%c'\n",(argv[i][1]));}
表达式
&(argv[i][0])
完全等同于
argv[i]
。不能以这种方式形成字符串的前导子字符串。对于您的特定任务,通过
=
操作符执行单个-
char
比较会更简单:

if (strcmp(&(argv[i][0]),"-")==0){
fprintf(stderr,"invalid option: '-%c'\n",(argv[i][1]));}

argv[i][0]
将是第
参数的第一个字符,例如
'-'
。获取该角色的地址不是您想要的。您只需将其与确切的字符进行比较,如下所示:
argv[i][0]='-'
谢谢@bruceg it work
argv[i][0]
将是
参数的第一个字符,例如
'-'
。获取该角色的地址不是您想要的。您只需将其与确切的字符进行比较,如下所示:
argv[i][0]='-'
谢谢@布鲁塞格:它能工作吗