采用二维数组处理,设立二维数组edit[M][N]。M行,每行可存N个字符。用getchar()输入,单词之间用空格隔开(空格也会作为字符存入),当捕获回车字符(‘\n’)时则换行即M++。
采用文本形式存储,只需要提供写文件操作即可(fprintf,fwrite的用法)。
查找、替换、修改操作对文件进行。文件的查找、替换和修改操作可以参考前面的介绍。
![](https://profile-avatar.csdnimg.cn/794a88221d254b41859a929cfbab4d3c_m0_71953256.jpg!4)
二维数组的问题,回答
- 写回答
- 好问题 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无用
悬赏问题
- ¥15 metadata提取的PDF元数据,如何转换为一个Excel
- ¥15 关于arduino编程toCharArray()函数的使用
- ¥100 vc++混合CEF采用CLR方式编译报错
- ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
- ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
- ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
- ¥50 如何openEuler 22.03上安装配置drbd
- ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
- ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
- ¥15 Windows11, backspace, enter, space键失灵