Хочу решить следующую задачу: дан текстовый файл, считать из него информацию и перезаписать ее в новый файл изменив слово "one" на 1 и слово "nine" на 9.
Пример :
file1.txt
one * nine = nine
nine / one = nine
file2.txt - результативный файл
1 * 9 = 9
9 / 1 = 9
Написал такое решение:
FILE *wfile = fopen("Temp.txt", "w"); // откроем старый файл
// запишем в него две строки
fprintf(wfile, "%s", "one * nine = nine");
fprintf(wfile, "%s", "\nnine / one = nine");
fclose(wfile); // закроем его
wfile = fopen("Result.txt", "w"); // открываем новый файл для записи
FILE *rfile = fopen("Temp.txt", "r"); // открываем старый для чтения
char tmp[100];
while (!feof(rfile)) {
fscanf(rfile, "%s ", &tmp); // считываем слово из старого файла
if (!strcmp(tmp, "one")) // если это "one",
fprintf(wfile, "%d ", 1); // то запишем в новый файл 1
// аналогично для "nine"
else if (!strcmp(tmp, "nine"))
fprintf(wfile, "%d ", 9);
else // или же это обычное слово
fprintf(wfile, "%s ", tmp);
}
fclose(rfile);
fclose(wfile);
Программа работает почти правильно. Но есть одна проблема.
Если в старом файле я имею такие две строки:
one * nine = nine
nine / one = nine
То в результативном получу одну:
1 * 9 = 9 9 / 1 = 9
Почему так выходит и как это исправить?
Спасибо.
while (!feof(rfile))... – Harry Mar 27 '19 at 16:23fscanfвсегда игнорирует пробельные символы (кроме форматов%cи%[]) . Как всегда было и как и должно быть. Почему для вас это явилось сюрпризом? – AnT stands with Russia Mar 27 '19 at 16:49