「検索と置換」プログラムを作成する必要があります。入力ファイルに変更を加える必要はありませんが、画面に変更を加えるだけです。
例:
file: foo pap ran bar foo. Nam foo!
replace: foo >with> bar
output to screen: bar pap ran bar bar. Nam bar!`
誰かが私がこれをどのように行うことができるかいくつかのアイデアを持っていますか?私はCの初心者です。
「検索と置換」プログラムを作成する必要があります。入力ファイルに変更を加える必要はありませんが、画面に変更を加えるだけです。
例:
file: foo pap ran bar foo. Nam foo!
replace: foo >with> bar
output to screen: bar pap ran bar bar. Nam bar!`
誰かが私がこれをどのように行うことができるかいくつかのアイデアを持っていますか?私はCの初心者です。
#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;
}
テキストの行を読み取り(行が1000文字より残っていると想定して簡単にする)、それを書き戻すプログラムを作成することから始めます。
それが機能するようになったら、行内のテキスト文字列(たとえば、「foo」)を探し、同じ数の見やすい文字に置き換えます(たとえば、fooをXXXに置き換えます)。
次に、彼らからそれを取ります。