Я ищу, чтобы заменить слова из файла, где word.txt содержит «банановое тестовое яблоко», будет выводиться -> «banana Replaced! Apple» Слова, которые он хотел бы заменить, пришли бы как аргумент для stdin («тест» в этом случае)C - Лучший способ для замены
Не знаете, где мой код идет не так, и мне также интересно, есть ли лучший способ сделать это, чем получить функцию getchar(), поскольку я нахожу это путают работать и раздражать, поскольку вы не можете копировать символы.
Любые предложения? Благодаря
$ ./a.exe test < words.txt
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char** argv) {
int c = getchar();
int counter = 0;
int i,index;
for (i = 1; i < argc; i++){
for (index = 0; index < strlen(argv[i]); index++){
while (c == argv[i][index]){
counter++;
c = getchar();
index++;
if (counter == strlen(argv[i])){
printf("Replaced!");
}
}
printf("%c ",c);
c = getchar();
counter = 0;
}
}
return (0);
}
Очевидное предложение читать целые строки с 'fgets()', а затем искать те (возможно, с 'strstr()'), чтобы найти слово, чтобы заменить, а затем распечатать материал перед словом и замените текст перед возобновлением поиска после совпадающего слова в строке (так что строка, содержащая «тестирование», 1, 2, 3, проверена! »« заканчивается как «» Заменена! ing, 1, 2, 3, Заменена ! ed! "'. –
Можете ли вы объяснить алгоритм, который, по вашему мнению, ваш код реализует - или, по крайней мере, добавлять к нему комментарии? –
Пожалуйста, внесите любой ввод в свою программу и любой вывод, который он производит при задании вопроса. просто покажите нам запущенную вами командную строку, но покажите нам ввод и вывод. В соответствии с этой командной строкой и кодом вы передаете содержимое word.txt в stdin * (так его источник данных для ваших вызовов getchar()), а затем вы перебираете буквы argv [1] «test» по какой-то причине, чтобы получить t-e-s-t. Это никак не связано с вашим описанием. Как говорит @DavidSchwartz, по крайней мере, комментируйте свои заблуждения, чтобы у нас был шанс обратиться к ним. – HostileFork