C - 如何递增文件的第一个整数
C - How to increment first int of a file
我有一个文件,我希望第一个 sizeof(int)
字节存储文件中后面的元素数。每当我向文件中添加一个元素时,我都想增加这个值。
代码如下所示:
int main() {
int val = 3;
FILE *file = fopen("hey", "wb");
fwrite(&val, sizeof(int), 1, file);
fclose(file);
increment_val();
}
void increment_val() {
int val;
FILE *file = fopen("hey", "ab+");
fread(&val, sizeof(int), 1, file);
val++;
fseek(file, 0, SEEK_SET);
fwrite(&val, sizeof(int), 1, file);
fseek(file, 0, SEEK_SET);
fread(&val, sizeof(int), 1, file);
printf("%d", val);
fclose(file);
}
我最初将一个值为 3 的 int 写入文件。
然后我读取这个值,增加它并写回它。
然而,当在此之后读取值时,它仍然保持原始值 3 而不是 4。
有趣的问题(谢谢 - 早上的好谜题,因为我不知道这个)。但潜在的问题是,当您打开追加时,写入会忽略查找。因此 increment_val
中的代码应该是:
FILE *file = fopen("hey", "rb+");
请注意,您实际上并不需要 b
。您可能来自 python 信号二进制文件?
我有一个文件,我希望第一个 sizeof(int)
字节存储文件中后面的元素数。每当我向文件中添加一个元素时,我都想增加这个值。
代码如下所示:
int main() {
int val = 3;
FILE *file = fopen("hey", "wb");
fwrite(&val, sizeof(int), 1, file);
fclose(file);
increment_val();
}
void increment_val() {
int val;
FILE *file = fopen("hey", "ab+");
fread(&val, sizeof(int), 1, file);
val++;
fseek(file, 0, SEEK_SET);
fwrite(&val, sizeof(int), 1, file);
fseek(file, 0, SEEK_SET);
fread(&val, sizeof(int), 1, file);
printf("%d", val);
fclose(file);
}
我最初将一个值为 3 的 int 写入文件。
然后我读取这个值,增加它并写回它。
然而,当在此之后读取值时,它仍然保持原始值 3 而不是 4。
有趣的问题(谢谢 - 早上的好谜题,因为我不知道这个)。但潜在的问题是,当您打开追加时,写入会忽略查找。因此 increment_val
中的代码应该是:
FILE *file = fopen("hey", "rb+");
请注意,您实际上并不需要 b
。您可能来自 python 信号二进制文件?