这就像我的代码没有将两者进行比较。我不明白为什么。这是给我带来麻烦的第一个条件。如何解决该问题?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[]){
FILE *in;
in = fopen(argv[1], "rw");
char s1[30], s2[30], s3[30];
if(strcmp(argv[2], "new") == 0){
while(fscanf(in, "%s %s %s", s1,s2,s3) == 3){
if(strcmp(s1, argv[3]) == 0 && strcmp(s2,argv[4])==0 && strcmp(s3, argv[5])==0){
printf("Errore! Cartolina già esistente.\n");
exit(0);
}
}
fprintf(in, "%s %s %s\n", argv[3], argv[4], argv[5]);
}
if(strcmp(argv[2], "find") == 0){
while(fgets(s1, 30, in) != NULL){
if(strstr(s1, argv[3]) != NULL){
printf("%s", s1);
}
}
}
return 0;
}
编辑:我刚刚意识到我使用了“ r”而不是“ rw”,但是它仍然没有在文件中打印argv [3],argv [4]和argv [5]。
答案 0 :(得分:2)
您没有正确打开文件:
in = fopen(argv[1], "rw");
rw
不是有效的模式。如果要打开以进行读写,请改用r+
。另外,别忘了检查fopen
是否失败。
in = fopen(argv[1], "r+");
if (!in) {
perror("fopen failed");
exit(1);
}