二维数组的问题,回答

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

我的思路是:
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;
    
}

img