【发布时间】:2015-03-29 19:09:34
【问题描述】:
我有点问题。我希望程序搜索文件,如果它与用户的输入匹配,那么程序将显示“hello”,如果不匹配,它将显示“bye”。这些输出仅用于测试目的。回到问题。当它到达比较行时,程序崩溃。现在我对如何解决这个问题一无所知。我要求有人帮助我,并在此先感谢。下面是一个sn-p的代码:
int CaseFunc();
int CaseFunc(){
FILE *memFile;
char memberfname[28];
char memberlname[28];
char ffname[28];
char flname[28];
char code;
struct PersonalInfo array[1000];
int memberage;
int menuANS;
int members;
int i;
members = 0;
printf("Enter your answer here: ");
scanf(" %d", &menuANS);
switch (menuANS){
case 1:
system("cls");
printf("Enter code: ");
scanf(" %c", &code);
do {
printf("Enter First Name: ");
scanf("%s", memberfname);
printf("Enter Last Name: ");
scanf("%s", memberlname);
printf("Enter Age: ");
scanf("%d", &memberage);
if ((memFile = fopen("TheCarDepot Members.txt", "a+")) == NULL){ //If the file path is incorrect, an error message is displayed
fprintf(stderr, "Error while opening file (%d: %s)\n",errno, strerror(errno)); //Error message that will be displayed if file path is incorrect
return;
}
fprintf (memFile, "%s %s %d", memberfname, memberlname, memberage);
fprintf (memFile, "\n");
fclose(memFile);
printf("\n\n");
printf ("*%s %s is now a member of TheCarDepot Team.*\n", memberfname, memberlname);
printf("Enter code: ");
scanf(" %c", &code);
}
while (code != 'x');
break;
case 2:
if ((memFile = fopen("TheCarDepot Members.txt", "r")) == NULL){ //If the file path is incorrect, an error message is displayed
fprintf(stderr, "Error while opening file (%d: %s)\n",errno, strerror(errno)); //Error message that will be displayed if file path is incorrect
return;
}
//while the file is opened and not at the end, the strings are stored into variables which forms an array of strings
for (members = 0; members < 200; members++) {
if (fscanf(memFile, "%s %s %d", memberfname, memberlname, &memberage) == 3) //Reads the contents of the file
break;
array[members].fname = strdup(memberfname);
array[members].lname = strdup(memberlname);
array[members].age = memberage;
}
fclose(memFile);
printf("Enter your first name: ");
scanf("%s", ffname);
printf("\n");
if (strcmp(array[members].fname, ffname) == 0){
printf ("hello");
}
else if (strcmp(array[members].fname, ffname) != 0){
printf ("bye");
}
break;
【问题讨论】:
-
哪个“比较线”?我看到多个比较事物的 if 语句。
-
@CareyGregory 使用 strcmp 的那一行