Функция fscanf - C (СИ) (150538)
Формулировка задачи:
Итак. Сначала создаем и открываем файл .txt далее записываем в него определенный текст.
Следующий раз, открывая файл, я пытался записать его содержимое в buffer, но записывается только 1-ое слово, а не все содержимое файла, знаю, что можно сделать это проще используя вместо функции fscanf функцию fgets т.е. fgets(buffer, 127, file);.Тогда весь текст файла data.txt копируется в buffer.
Вопрос в том как это осуществить используя только функцию fscanf???
#include<stdio.h> int main(){ char buffer[128]; FILE *file = fopen("data.txt","w+t"); fprintf(file, "Hi! I forgot my name. By)))"); fclose(file); file = fopen("data.txt","r"); fscanf(file, "%127s", buffer); printf("%s\n", buffer); fclose(file); return 0; }
Решение задачи: «Функция fscanf»
textual
Листинг программы
/* ANSI C 99 */ #include <stdio.h> #include <stdlib.h> #include <sys/stat.h> #include <sys/types.h> #include <unistd.h> #define PROGRAM_NAME argv[0] #define FILE_NAME argv[1] int main(int argc, char ** argv) { if ( argc < 2 ) { fprintf(stderr, "USAGE: %s file_name\n", PROGRAM_NAME); return -1; } struct stat st; if ( stat(FILE_NAME, &st) ) { perror("stat"); return 1; } size_t len = st.st_size + 1; char * buf = malloc(len); if ( ! buf ) { perror("malloc"); return 1; } FILE * fin = fopen(FILE_NAME, "r"); if ( ! fin ) { fprintf(stderr, "%s: can't open %s for input!\n", PROGRAM_NAME, FILE_NAME); return 1; } if ( fscanf(fin, "%[\x01-\xff]", buf) != 1 ) { perror("fscanf"); if ( fclose(fin) ) perror("fclose"); free(buf); return 1; } if ( fclose(fin) ) perror("fclose"); printf("Content of %s:\n%s\n", FILE_NAME, buf); free(buf); return 0; }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы
- Определяем макросы для удобства работы с аргументами командной строки
- Проверяем корректность передачи аргументов командной строки
- Получаем информацию о файле с помощью функции stat
- Выделяем память под буфер с помощью функции malloc
- Открываем файл для чтения с помощью функции fopen
- Пытаемся считать содержимое файла с помощью функции fscanf
- Проверяем корректность работы fscanf
- Закрываем файл с помощью функции fclose
- Выводим содержимое файла на экран с помощью функции printf
- Освобождаем выделенную память с помощью функции free
- Завершаем программу с возвращаемым значением 0
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д