在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;
}

对我做错了什么的想法?我尝试了其他几乎几乎类似的问题,但这是徒劳的。

除了顶部的讨论

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

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

很可能您会在userlist[i]上获得SEGFAULT,因为sizeof(userlist)可能比number_of_employee

更大的数字

如果要检查userList.txt文件是否存在,则可以使用Open进行检查。
OPEN将返回新的文件描述符,或者如果发生错误(在这种情况下,将适当设置Errno(,则将返回-1。这是男人http://man7.org/linux/man-pages/man2/open.2.html
那么,如果fd(文件描述符(与返回的open返回的是-1不同,则意味着文件存在并且您可以成功地打开它,因此您可以使用FD读取它。

相关内容

  • 没有找到相关文章

最新更新