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;
}