【问题标题】:Writing and reading from file to struct or the reverse in c在c中从文件写入和读取到结构或相反
【发布时间】:2012-04-23 17:40:28
【问题描述】:

嗯...我是 c 的新手。 我有个问题。我有2个结构。 1 是节点列表,它是链表,1 是链接到节点的结构数组。我就是这样声明的。

    typedef struct mhs mhs;
    typedef struct kelas kelas;

struct mhs
{
    char nama[31];
    char nim[16];
    int angkatan;
    float ipk;
};

struct kelas
{
    char kls[13];
    int jml;
    mhs siswa[40];
    kelas *next;
};

kelas=node 和 mhs=struct 数组 我想制作一个基于节点的文件。因此,如果我有 3 个节点,那么我将编写 3 个不同的文件,其中包含 mhs,我还想让 node->kls 作为名称文件。那可能吗?如果是,我该怎么做?感谢您的提前。

【问题讨论】:

  • 您遇到了什么问题 - 遍历链表?用 C 写入文件?
  • 写入文件也许我暂时没有实现它。我应该使用什么方法?我无法让 node->kls 成为我的名称文件并写入不同的文件

标签: c file-io linked-list


【解决方案1】:

类似

#include <stdio.h>


int printNodesToFile(kelas* node) {
    char filename[100] = {0};

    int idx;
    for(idx = 1; node = node->next, idx++; node != NULL) {
        snprintf(filename, sizeof(filename), "kelas.%d.txt", idx);
        FILE* outFile = fopen(filename, "w");
        if(outFile == NULL) return 1;
        //do stuff
        fclose(outFile);
    }
    return 0;
}

【讨论】:

  • 如何将我的 mhs 写入该文件?我正在尝试为(int i=0;ijml;i++) fprintf("%d.%s; %s; %d; %.2f\n",i+1,itr- >siswa[i].nama,itr->siswa[i].nim,itr->siswa[i].angkatan,itr->siswa[i].ipk);但它无法编译
  • 它说“arg 1 不是 struct *”。类似的东西。
  • 我正在尝试这样做 fprintf(outFile,"%d. %s; %s; %d; %.2f\n",i+1,itr->siswa[i]. nama,itr->siswa[i].nim,itr->siswa[i].angkatan,itr->siswa[i].ipk) 这是正确的吗?但是为什么我打开它,它无法读取?是用二进制数据保存的吗?
  • 打开后看不懂有什么意义?你看到垃圾字符了吗?
  • 对于初学者,您的格式字符串是错误的。阅读 printf 的工作原理。
猜你喜欢
  • 2016-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-16
  • 2013-08-02
  • 1970-01-01
  • 2015-01-09
  • 1970-01-01
相关资源
最近更新 更多