08/02/08 01:24:30
>>53 便乗でゴミソース。 一度置換した文字列をバッファに確保すべきだろうか?
#include <stdio.h>
#include <string.h>
#define BSIZE 1024
int ismatch(char *str1, char *str2){
while(*str1 == *str2){
if(*str1 == '\0') return 0;
if(*str2 == '\0') break;
str1++, str2++;
}
return *str2 == '\0';
}
int main(int argc, char *argv[]){
FILE *in, *out;
int cnt = 0, len;
char buf[BSIZE], *p;
if(argc < 4) return fprintf(stderr, "Usage: <FILENAME> <STRING> <STRING> [FILENAME]\n"), 1;
if((in = fopen(argv[1], "r")) == NULL) return perror(argv[1]), 1;
if(argc < 5) out = stdout;
else out = fopen(argv[4], "w");
len = strlen(argv[2]);
while(fgets(buf, sizeof(buf), in))
for(p = buf; *p != '\0'; p++)
if(ismatch(p, argv[2]))
fputs(argv[3], out), p += len - 1, cnt++;
else
fputc(*p, out);
fclose(in);
if(argc >= 5) fclose(out);
printf("\"%s\"-> \"%s\",(%d)\n", argv[2], argv[3], cnt);
return 0;
}