采用二维数组处理,设立二维数组edit[M][N]。M行,每行可存N个字符。用getchar()输入,单词之间用空格隔开(空格也会作为字符存入),当捕获回车字符(‘\n’)时则换行即M++。
采用文本形式存储,只需要提供写文件操作即可(fprintf,fwrite的用法)。
查找、替换、修改操作对文件进行。文件的查找、替换和修改操作可以参考前面的介绍。

二维数组的问题,回答
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- a5156520 2022-06-13 10:33关注
我的思路是:
1、先把读取的MxN个字符写入文件
2、从输入获取要修改的字符及其替代字符
3、查找文件中指定字符的位置
4、定位到这个字符位置,然后进行修改。
代码如下:#include <stdio.h> #include <string.h> #include <iostream> #define M 3 #define N 10 using namespace std; int main(void){ char edit[M][N]; int i=0,j=0; char ch; cout<<"请输入第"<<i+1<<"行的字符, 按回车结束此行输入:\n"; //获取MxN个字符输入 while(i<M){ ch=getchar(); j=0; while(j<N&&ch!='\n'){ edit[i][j]=ch; ch=getchar(); j++; } i++; } // int k; // cout<<"输入的字符为:"<<endl; // for(i=0;i<M;i++){ // // for(k=0;k<j;k++){ // cout<<edit[i][k]; // } // cout<<endl; // } FILE * fp = fopen("editfile.txt","w"); if(fp==NULL){ printf("打开或创建文件失败!\n"); return -1; } int k; //写入文件 for(i=0;i<M;i++){ for(k=0;k<j;k++){ fprintf(fp,"%c",edit[i][k]); } } fclose(fp); //查找文件中指定的字符第一次出现的地方,并对他进行修改 char modify; cout<<"请输入要修改的字符:"<<endl; cin>>ch; cout<<"请输入要修改成什么字符:"<<endl; cin>>modify; fp = fopen("editfile.txt","r"); if(fp==NULL){ printf("打开或创建文件失败!\n"); return -1; } char target; long pos; int find=0; //查找文件中指定字符的位置 for(i=0;i<M;i++){ for(k=0;k<j;k++){ pos=ftell(fp); fscanf(fp,"%c",&target); if(target==ch){ find=1; break; } } if(find==1){ break; } } fclose(fp); // cout<<"pos="<<pos<<endl; fp = fopen("editfile.txt","r+"); if(fp==NULL){ printf("打开或创建文件失败!\n"); return -1; } //把指定字符修改成目标字符 if(find==1){ fseek(fp,pos,SEEK_SET); fwrite(&modify,sizeof(char),1,fp); } fclose(fp); return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用