我试图开发一个程序,将显示一个文件的内容,并使用命令行参数将file1.txt的内容复制到file2.txt。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[]){`
char show[6] = "--show";
char copy[6] = "--copy";
char help[2] ="-h";
if(argc == 3){
// chandu --show filename
if(strcmp(argv[1],show)){ // strcmp => compares two strings.
FILE *sfile;
char ch;
sfile=fopen(argv[2],"r");
while((ch = fgetc(sfile)) != EOF){
if(ferror(sfile)){
perror("I/W");
break;
}
else{
printf("%c",ch);
}
}
fclose(sfile);
exit(0);
}else{
puts("use -h for help.\n");
}
}
问题是:显示内容必须使用./chandu --show meow.txt
,但它可以使用./chandu show meow.txt
。意味着使用双连字符(--)它不能工作,没有连字符,它可以工作。为什么?我想不通。请帮助。
我将strcmp()
更改为strncmp()
,以便它可以运行(命中试验方法),但它没有运行。
1条答案
按热度按时间6jygbczu1#
strcmp
返回0表示两个字符串相等,0
表示if
的条件不会执行。您可以显式地将结果与0
进行比较: