从文件错误中读取

时间:2017-02-26 20:18:09

标签: c file

这是一个从文件中读取并根据“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;
 }

1 个答案:

答案 0 :(得分:2)

scanf("%s", & acc);不起作用/是未定义的行为,acc永远不会被初始化(充其量),并且您无法在文件中找到该模式。

如果字符串scanf需要一个指针/数组的字符,你已经为它提供了acc

你必须scanf("%s", acc);

此外,您的内部循环上升到1。它只读一个记录!一旦读取文件,就没有数据可供阅读了。您应该每次打开文件并进行扫描,并在到达文件末尾时停止。