比较字符数组的地址

时间:2014-02-20 05:01:19

标签: c

所以它使用if(argv [i] ==“ - o”)给我一个错误。 我可以使用不同的功能。

2 个答案:

答案 0 :(得分:1)

你不能在C:

中比较这样的字符串
if(argv[i]=="-o")

只是比较字符数组的地址。

您需要的是:

if(strcmp(argv[i],"-o") == 0)

这实际上贯穿2个字符串,如果所有字符都相同则返回0。

答案 1 :(得分:0)

第一个循环尝试将所有参数作为文件打开,因此如果在文件名之前出现-o,它将尝试打开文件“-o”

您正在将字符串与==进行比较,这不符合您的意图,因为它只比较指针,而不是字符串本身。尝试使用strcmp

如果-o是最后一个参数,你会得到一个内存错误,就像你找到一个-o一样,然后盲目读取argv [i + 1],即使i = argc-1