我正在尝试在.txt文件中进行一些简单的读/写操作。我编写了一个用于读取内容的函数,另一个用于写回内容-1。
例如," counter.txt"中的内容在完成我的代码之后,我想控制台输出应该显示为:
索引现在是:20
索引现在是:19
但是显示20和0,我不明白为什么。谢谢你的帮助!
#include <stdio.h>
#include <stdlib.h>
int read_data() {
FILE *fptr;
char *s;
fptr = fopen("counter.txt","r");
if (!fptr) {
printf("fail to open..\n");
exit(1);
}
fgets(s,25,fptr);
fclose(fptr);
return atoi(s);
}
void write_data(char *s) {
FILE *fptr;
fptr = fopen("counter.txt","w");
if (!fptr) {
printf("fail to open..\n");
exit(1);
}
fputs(s,fptr);
fclose(fptr);
}
int main(void) {
char index_str[5];
int index = read_data();
printf("index now is:%d\n", index);
sprintf(index_str,"%d",index-1);
write_data(index_str);
index = read_data();
printf("index now is:%d\n", index);
sprintf(index_str,"%d",index-1);
write_data(index_str);
return 0;
}
答案 0 :(得分:0)
在read_data()
中,替换
char *s;
与
char s[200];
您将拥有有效的s
。这会在堆栈上分配200个字节,您(fgets()
)可以安全地在那里写东西并使用它。