C语言 如何创建一个从test.txt阅读结构的函数

nfzehxib  于 2022-12-02  发布在  其他
关注(0)|答案(2)|浏览(147)

如何创建一个函数来读取test.txt中的结构。我在main中有一个很好的工作代码,但是我需要从main()中执行它。如何合并(struct student PI 1 [N]和(fread()or fgets()or fwrite()));
第一个

nlejzf6q

nlejzf6q1#

不要说“可以创建一个函数来读取test.txt中的结构”,而是从一个函数开始,将一个 stringfgets()转换为struct,然后根据需要调用它。
使用sprintf()" %n"检测没有额外文本的完整扫描。

// Return success flag
bool string_to_student(struct student *stu, const char *s) {
  int n = 0;
  sscanf(s, "%49s%49s%49s%d %n", stu->surname, stu->name,
      stu->dayBirth, &stu->mark, &n);
  return n > 0 && s[n] == '\0';
}

用途

while (i < N && fgets(str, sizeof str, ptr) && 
    string_to_student(&PI1[i], str)) {
  i++;
}
counter = i;
2guxujil

2guxujil2#

最有效的解决方案是将结构存储在二进制文件中。
此外,你不必关心格式等。
书写:

FILE* fp;
struct student;

fp = fopen("test.txt", "wb");
fwrite(&student, 1, sizeof(student), fp);
fclose(fp);

阅读:

FILE* fp;
struct student;

fp = fopen("test.txt", "rb");
fread(&student, 1, sizeof(student), fp);
fclose(fp);

(Didn(为简单起见,不编写错误检查)

相关问题