2012-04-12 6 views
-2

「検索と置換」プログラムを作成する必要があります。入力ファイルに変更を加える必要はなく、画面にのみ変更します。テキストファイルを画面に出力する

例:

file: foo pap ran bar foo. Nam foo! 

replace: foo >with> bar 

output to screen: bar pap ran bar bar. Nam bar!` 

誰もが、私はこれを行うことができますどのようにいくつかのアイデアを持っていますか?私はCの初心者です。

答えて

1
#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 

long GetFileSize(FILE *fp){ 
    long fsize = 0; 

    fseek(fp,0,SEEK_END); 
    fsize = ftell(fp); 
    fseek(fp,0,SEEK_SET);//reset stream position!! 

    return fsize; 
} 

int main(int argc, char **argv){ 
    char *file, *sword, *rword, *buff, *wp,*bp; 
    int len; 
    long fsize; 
    FILE *inpFile; 

    if(argc != 4){ 
     fprintf(stderr, "Usage:rep filePath originalWord replaceWord\n"); 
     exit(EXIT_FAILURE); 
    } 
    file = argv[1]; 
    sword = argv[2]; 
    rword = argv[3]; 
    if(NULL==(inpFile=fopen(file, "rb"))){ 
     perror("Can't open file"); 
     exit(EXIT_FAILURE); 
    } 
    fsize = GetFileSize(inpFile); 
    buff=(char*)malloc(sizeof(char)*fsize+1); 
    fread(buff, sizeof(char), fsize, inpFile);//file all read into buff 
    fclose(inpFile); 
    buff[fsize]='\0'; 
    bp=buff; 
    len = strlen(sword); 
    while(NULL!=(wp=strstr(bp, sword))){ 
     while(bp != wp) 
      putchar(*bp++); 
     printf("%s",rword); 
     bp+=len; 
    } 
    if(bp) printf("%s", bp); 
    free(buff); 
    return 0; 
} 
+0

すべてを読んで、 – BLUEPIXY

1

まず、テキスト行を読み込むプログラムを書くことで始まります(行が1000文字以上と仮定して簡単に作成して戻します)。

作業が完了したら、行内にテキスト文字列(たとえば「foo」)を探し、見やすい文字数に置き換えます(たとえば、fooをXXXに置き換えます)。

それからそれらを取る。

関連する問題