我有一个只有数字的文件:
01 2 3 4 5
5 6 7 8 9 10
我已将此函数写入文件:
无效更改(char*文件){
整数计数=0;
文件*arquive=fopen(文件“a+”);
字符行[256];
memset(行,0,strlen(行));
char auxLine[256];
memset(auxLine,0,strlen(auxLine));
while(fgets(line,sizeof(line),arquive)!=NULL){
如果(计数=1){
memset(auxLine,0,strlen(auxLine));
strncpy(生产线、生产线、生产线尺寸);
fprintf(arquive,“%s”,auxLine);
}否则{
计数++;
}
}
}
文件上的输出:
567789105678910
10
2 10
2 10
9 9 16 16空空空空空空空空
但每当我尝试使用fprintf将字符串附加到文件时,它都会打印大量垃圾。我试着用memset来清理里面的东西,但没有成功
谢谢你的帮助
-
fopen(…,“a+”)——开放阅读和写作。流位于文件的末尾。因此,永远不会进入while循环
-
副本和成员集是无意义的,下面的代码是等效的:
无效更改(char*文件){
整数计数=0;
文件*arquive=fopen(文件“a+”);
字符行[256];
while(fgets(line,sizeof(line),arquive)!=NULL){
如果(计数=1){
FPUT(直线,arquive);
}否则{
计数++;
}
}
}
- 下面的版本可能更接近您想要的版本:
无效更改(char*文件){
整数计数=0;
文件*arquive=fopen(文件“a+”);
文件*src=fopen(文件“r”);
字符行[256];
while(fgets(line,sizeof(line),src)!=NULL){
如果(计数=1){
FPUT(直线,arquive);
}否则{
计数++;
}
}
fclose(src);
fclose(arquive);
}
- 您可能正在玩火,读取和写入要附加的文件。但它似乎至少对小文件有效