Переписать файл, заменяя строчные буквы прописными - C (СИ)
Формулировка задачи:
Дан символьный файл f, состоящий из малых латинских букв и знаков препинания. Перепи-сать файл, заменяя строчные буквы прописными. Распечатать файл до и после преобразования
printFile() работает, только последний символ выводится почему-то 2 раза.
modifyFile() стирает и не пишет в файл ничего.
#include <stdio.h> #include <ctype.h> #define nameF "f.txt" void printFile(const char *fName) { char c; FILE *f; if ((f = fopen(fName, "r")) == NULL) printf("Can't open file %s.\n", fName); else { printf("%s:\n", fName); while (!feof(f)) { fscanf(f, "%c", &c); printf("%c", c); } fclose(f); } } void modifyFile(const char *fName) { char c; FILE *f; if ((f = fopen(fName, "w+")) == NULL) printf("Error. File %s was not created.\n", fName); else { while ((c = getc(f)) != EOF) { // toupper(c); putc(c, f); } fclose(f); } } int main() { printf("Original file "); printFile(nameF); modifyFile(nameF); printf("\nModified file "); printFile(nameF); return 0; }
Решение задачи: «Переписать файл, заменяя строчные буквы прописными»
textual
Листинг программы
void printFile(const char *fName){ FILE *file; char c; if ( ( file = fopen( fName, "r" ) ) == NULL ) printf( "Error\n" ); else { while ( ( c = fgetc( file ) ) != EOF ){ printf( "%c", c ); } fclose( file ); } } void modifyFile(const char *fName){ FILE *file; char c; if ( ( file = fopen( fName, "r+" ) ) == NULL ) printf( "Error\n" ); else { int i = 0; while ( ( c = fgetc( file ) ) != EOF ){ fseek( file, i, SEEK_SET ); fputc( toupper( c ), file ); i++; fseek( file, i, SEEK_SET ); } fclose( file ); } }
Объяснение кода листинга программы
- В функции
printFile
открывается файл с помощьюfopen
на чтение (r
) и выводится его содержимое с помощьюfgetc
иprintf
. - В функции
modifyFile
открывается файл с помощьюfopen
на чтение и запись (r+
), и выводится его содержимое с помощьюfgetc
. - Для каждой буквы в файле выполняется следующее:
- С помощью
fseek
устанавливается позиция в файле. - С помощью
fputc
заменяется буква на прописную с помощью функцииtoupper
. - Позиция в файле сдвигается на следующую букву с помощью
fseek
.
- С помощью
- После обработки всех букв файл закрывается с помощью
fclose
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д