26.12.2006, 20:29
общий
это ответ
Здравствуйте, Werebear!
Программа на "чистом" C, как ты и просил, без доп. массивов и файлов.
Имя файла передаётся через командную строку.
В двух словах о работе. Считываем символ. Если это цифра, то увеличиваем её на единицу. Смещаем курсор файла назад на один символ и перезаписываем цифру новым значением. Обрати внимание, что после каждой записи вызывается flush для сброса файла на диск. Без него не работает, я так и не понял, почему. Может быть, кто-нибудь объяснит?
Приложение:
#include <stdio.h>#include <ctype.h>int main(int argc, char* argv[]){ FILE* file; int ch; if (argc != 2) return 1; file = fopen(argv[1], "r+"); if (file == NULL) return 1; while (!feof(file)) { ch = fgetc(file); if (isdigit(ch)) { ++ch; fseek(file, -1, SEEK_CUR); fputc(ch, file); fflush(file); } } return 0;}