首页 > 解决方案 > 在 C 中打开文件以进行读取

问题描述

我在 C 编程方面遇到了问题,希望大家能给予我很大的帮助。

我应该编写一个控制台应用程序来管理人力资源。下面的代码应该检查userlist.txt文件是否存在,如果存在,它会从中读取。代码编译并链接成功,但执行时出现分段错误。

bool userListAvailable() {
  bool userListExist = false;
  struct user_details userlist[number_of_employee];
  FILE *userListFile=fopen("userlist.txt", "w");
  if (!(userListFile == NULL)) {
    fread(userlist, sizeof (userlist), 1, userListFile);
    for (int i = 0; i < sizeof (userlist); ++i) {
        if (strstr(userlist[i].email, "@") != NULL) {
            userListExist = true;
            break;
        }
    }
  }
  fclose(userListFile);
  return userListExist;
}

知道我做错了什么吗?我尝试了其他几个几乎相似的问题,但都是徒劳的。

标签: csegmentation-fault

解决方案


除了顶部的讨论

for (int i = 0; i < sizeof(userlist); ++i) {

很可能是错误的,因为您想读取number_of_employee而不是缓冲区中的字节数。

很可能你会得到一个段错误,userlist[i]因为sizeof(userlist)它可能比number_of_employee


推荐阅读