这是一个从文件中读取并根据“acc_num”打印信息的c程序。但问题是它只接受文件中的第一个acc_num 这是为什么 ?我想让它在整个文件中搜索特定的acc_num。
#include < stdio.h >
#include < string.h >
#include < conio.h >
struct CUSTOMER {
char fname[50];
char lname[50];
char address[100];
char con_num[50];
char email[50];
char acc_num[999]; //account number
};
struct CUSTOMER information[999];
int main() {
FILE * fptr;
fptr = fopen("customers.dat", "r");
int i;
int x;
char acc[50];
for (x = 0; x < 1; x++) {
printf("Enter account number:");
scanf("%s", & acc);
getchar();
for (x = 0; x < 1; x++) {
fscanf(fptr, " %s\n", information[x].acc_num);
fscanf(fptr, " %s\n", information[x].fname);
fscanf(fptr, " %s\n", information[x].lname);
if (strcmp(information[x].acc_num, acc) == 0) {
printf("%s%s%s", information[x].acc_num, information[x].fname, information[x].lname);
getchar();
}
}
}
getch();
return 0;
}
答案 0 :(得分:2)
scanf("%s", & acc);
不起作用/是未定义的行为,acc
永远不会被初始化(充其量),并且您无法在文件中找到该模式。
如果字符串scanf
需要一个指针/数组的字符,你已经为它提供了acc
。
你必须scanf("%s", acc);
此外,您的内部循环上升到1
。它只读一个记录!一旦读取文件,就没有数据可供阅读了。您应该每次打开文件并进行扫描,并在到达文件末尾时停止。