c - 如何在 C 中退出后返回变量

标签 c arrays struct append

好的,我有一个程序,它将新条目添加到 .dat 文件的结构中。我知道 append 它时会添加到列表的末尾。这很好用。我遇到的问题是我有一个跟踪变量来跟踪结构的长度。我可以带回结构中的项目,但如何带回跟踪长度的变量。你也找不到它的长度,所以我必须带回一个变量。我正在考虑将 .dat 文件的第一行保留为跟踪变量,但我不知道您是否可以仅 append 第一行。

波纹管当然是我用来向我的结构中添加项目的东西。上面是 num++,这意味着结构的长度增加了一个。

if ( pWrite != NULL ) {
    fprintf(pWrite, "%s %s %s\n", info2[nume].first, info2[nume].last, info2[nume].number);
    fclose(pWrite);
} else {
    perror("The following error occurred");
    exit(EXIT_FAILURE); //exit program with error
}

不确定我是否遗漏了什么。任何帮助都会很棒。谢谢!

最佳答案

在文件中存储一个整数,表示文件中的结构数量。

[integer]xxxxxxxxxxxxxxxxxxxxxx

xxxxxxxxxxxxxxxxxxxxxx[integer]

在这两种情况下,打开文件 (→ fopen) 时更新都需要 r+ 标志。然后,您可以简单地读取然后覆盖整数。

// This may not work - my C skills got worse over the time :)

FILE *f = fopen("test.dat", "r+");
fread(buffer, sizeof(int), 1, f);

fseek(f, 0, SEEK_START); 

fwrite(buffer, sizeof(int), 1, f);

关于c - 如何在 C 中退出后返回变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19637722/

相关文章:

C 编译器损坏 : is not able to compile a simple test program

c - 如何制作像这样的输入的邻接矩阵

c - 转发声明到指向结构的指针数组搞砸了?

c - 如何将数组传递给函数?指针?

c - 在 C 代码中通过引用将结构传递给函数(编译错误)

c - x86 程序集中出现奇怪的段错误

c - 如何获取用户输入的字符?

c++ - 访问链表中的结构(带有指向其子实现的指针列表的树)

c - 为什么 5.0/3 在 C 中是 1.666667?

c - 为什么 C 编译器不能重新排列结构成员以消除对齐填充?