2012-04-12 51 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代替富)。

然后把它从他们。