2012-04-12 10 views
-2

Ich muss ein "Suchen und Ersetzen" -Programm machen. Es muss die Änderungen nicht in der Eingabedatei, sondern nur auf dem Bildschirm vornehmen.Ausgabe der Textdatei auf den Bildschirm

Beispiel:

file: foo pap ran bar foo. Nam foo! 

replace: foo >with> bar 

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

Hat jemand ein paar Ideen, wie ich dies tun könnte? Ich bin Neuling zu C.

Antwort

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

Alles lesen, und gab dann eine Substitution aus – BLUEPIXY

1

Beginnen Sie mit dem Schreiben eines Programms, das eine Textzeile liest (machen Sie es einfach, indem Sie annehmen, dass die Zeile als 1000 Zeichen übrig ist) und schreibt es zurück.

Sobald dies funktioniert, suchen Sie nach einer Textzeichenfolge (z. B. "foo") innerhalb der Zeile und ersetzen Sie sie durch eine ähnliche Anzahl leicht zu erkennender Zeichen (z. B. foo durch XXX ersetzen).

Dann nehmen Sie es von ihrem.

Verwandte Themen