argc argv问题
有人可以告诉我为什么这段代码不起作用吗?它编译。当我在命令行中键入解密为argv [1]参数时,它仍然给我else输出。即,argv [1]即使应该是不满意的。这是一项正在进行的工作,从而忽略了其他的代码argc argv问题
if ((argv[1] == "decrypt"))
{
printf("Decrypting...\n");
c = getc(fp1);
if (c != EOF)
{
fread(inputbuffer, sizeof(char), 50 , fp1);
printf("%s", inputbuffer);
/*while(inputbuffer[i]!=EOF)
{
fputc((inputbuffer[i]/2) - 5, fp2);
}*/
}
}
else {printf("argv not working");}
您需要使用strcmp()
比较字符串:
if ((strcmp(argv[1], "decrypt") == 0)
你是比较有哪两种内存不同字符串的地址,它们存储在不同的位置。这样做实际上是这样的:
if(0x00403064 == 0x002D316A) // Two memory locations { printf("Yes, equal"); }
我处理已将其更改为strcmp,现在程序崩溃!它不是打印“Decrypting ...”,所以它仍然是引起问题的argv编辑:修复它我的不好你的解决方案是完美的谢谢 – adohertyd 2011-12-22 15:42:37
@adohertyd:你的代码有其他的错误,比如可能的非空字符串你正在尝试打印。还要确保'argc'至少是2. – 2011-12-22 15:43:49
显示新的代码? – 2011-12-22 15:45:11
使用STRCMP或C++使用的std :: string – Abyx 2011-12-22 15:33:15
这有什么好做的argc/argv的,和一切与字符串如何在C – abelenky 2011-12-22 15:34:27