У меня есть некоторый код здесь, где, учитывая файл .txt, содержимое которого
find replace pre
pre
cpre
, я хочу найти каждый экземпляр «pre» и добавить к нему «k».т.е. файл должен стать "найти заменить kpre".
Итак, сначала я решил создать строку, представляющую собой конкатенацию k и pre (предположим, что k и pre равны argv [1] и argv [3] соответственно)
char appended[1024];
strcpy(appended, argv[1]);
strcat(appended, argv[3]);
printf("appended string is %s", appended); //prints kpre, which is good
char *replaced = replace(buf, argv[3], appended);
//*string is a line in the file
char* replace(char *string, char *find, char *replace) {
char *position;
char temp[1024];
int find_length = strlen(find);
int index = 0;
while ((position = strstr(string, find)) != NULL) {
strcpy(temp, string);
index = position - string;
string[index] = '\0';
strcat(string, replace); //add new word to the string
strcat(string, temp + index + find_length); //add the unsearched
//remainder of the string
}
return string;
}
.................
fputs(replaced, temp);
Проверка на консоли, appended = "kpre", это правильно, но когда код запускается, файл выглядит так:
find replace kkkkkkkkkkkkkkkk.....kkkkkkk
kkkkkkkkk......kkkkk
ckkkkk....kkkkk
k идут некоторое время, я не вижу pre при прокрутке всехпуть вправо.Мне трудно понять, почему код не заменяет экземпляр 'pre' на 'kpre', даже если добавленная переменная кажется правильной.У меня есть ощущение, что это связано с тем, что я установил 1024 символа для temp, но даже тогда я не уверен, почему k копировалось так много раз.