C语言文本指针这项一直没学好。 现在本人有一个文本文件其开头部分如下图,假如本人希望键盘输入809,5,将原文本文件的N=20,M=3,替换为第二张图所示的N=809,M=5。
也就是说实现输入任何两个数,都可以将文本中的N,M值改为本人输入的值,请教各位老师同学了。
也就是说实现输入任何两个数,都可以将文本中的N,M值改为本人输入的值,请教各位老师同学了。
解决方案
40
//所谓修改删除文件a某位置的内容,其实是读打开文件a,再将‘a中修改删除位置之前的内容+修改删除的内容+a中修改删除位置之后的内容’保存到文件b,关闭文件a, //删除文件a,将文件b改名为与之前文件a相同的名字,仅此而已。 #include <stdio.h> FILE *fi,*fo; char ln[256],c; int N,M,v; int main() { fi=fopen("APDL3.mac","r"); if (NULL==fi) { printf("Can not open file APDL3.mac!\n"); return 1; } fo=fopen("tmp.mac","w"); if (NULL==fo) { fclose(fi); printf("Can not create file tmp.mac!\n"); return 2; } while (1) { printf("Input N,M:");fflush(stdout); rewind(stdin); if (2==scanf("%d,%d",&N,&M)) break; } while (1) { if (NULL==fgets(ln,256,fi)) break; if (2==sscanf(ln,"N=%d%c",&v,&c)) { if ("\n"==c) { fprintf(fo,"N=%d\n",N); continue; } } if (2==sscanf(ln,"M=%d%c",&v,&c)) { if ("\n"==c) { fprintf(fo,"M=%d\n",M); continue; } } fprintf(fo,"%s",ln); } fclose(fo); fclose(fi); remove("APDL3.mac"); rename("tmp.mac","APDL3.mac"); return 0; }