如何使用C中的文件执行此操作?

我有一个只有数字的文件:

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来清理里面的东西,但没有成功

谢谢你的帮助

  1. fopen(…,“a+”)——开放阅读和写作。流位于文件的末尾。因此,永远不会进入while循环

  2. 副本和成员集是无意义的,下面的代码是等效的:

无效更改(char*文件){
整数计数=0;
文件*arquive=fopen(文件“a+”);
字符行[256];
while(fgets(line,sizeof(line),arquive)!=NULL){
如果(计数=1){
FPUT(直线,arquive);
}否则{
计数++;
}
}
}
  1. 下面的版本可能更接近您想要的版本:
无效更改(char*文件){
整数计数=0;
文件*arquive=fopen(文件“a+”);
文件*src=fopen(文件“r”);
字符行[256];
while(fgets(line,sizeof(line),src)!=NULL){
如果(计数=1){
FPUT(直线,arquive);
}否则{
计数++;
}
}
fclose(src);
fclose(arquive);
}
  1. 您可能正在玩火,读取和写入要附加的文件。但它似乎至少对小文件有效

发表评论