2012-04-12 81 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 2012-04-13 12:03:13

1

開始(可以很容易通過假設行保留超過1000個字符),並將其寫入回來了。

一旦你的工作,找行內的文本字符串(如「富」),並用類似的簡單的數字取代它看到的字符(例如用XXX代替富)。

然後把它從他們。