Чтение файла - C (СИ)
Формулировка задачи:
Почему ничего не выводится в мейне по указателю pReadData, а в функции выводится?
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <errno.h> int read_file(FILE *pFile, char *pReadData); int main(int argc, char *argv[]) { if(argc < 2) { perror ("Error arg < 2"); return 1; } char *pFilename = argv[1]; printf("read file %s\n", pFilename); FILE *pFile = fopen (pFilename, "r"); if (pFile == NULL) { perror ("Error opening file"); fclose (pFile); return errno; } char *pReadData = NULL; if(read_file(pFile, pReadData) == 0) { printf("read data:\n%s\n", pReadData); } fclose (pFile); free (pReadData); return 0; } int read_file(FILE *pFile, char *pReadData) { fseek (pFile , 0 , SEEK_END); long lSize = ftell (pFile); rewind (pFile); pReadData = (char*) malloc ( sizeof(char) * lSize ); if (pReadData == NULL) { fputs ("Memory error", stderr); return 1; } size_t result = fread (pReadData, 1, lSize, pFile); if (result != lSize) { fputs ("Reading error", stderr); return 2; } printf("read data:\n%s\n", pReadData); return 0; }
Решение задачи: «Чтение файла»
textual
Листинг программы
if(read_file(pFile, &pReadData) == 0) {
Объяснение кода листинга программы
- Входные данные: pFile - указатель на файл, pReadData - указатель на структуру данных, которая будет заполнена при успешном чтении файла.
- Вызов функции read_file(pFile, &pReadData), где pFile - это указатель на файл, а &pReadData - это указатель на структуру данных, в которую будут записаны данные из файла.
- Оператор сравнения if(read_file(pFile, &pReadData) == 0) проверяет, успешно ли было выполнено чтение файла. Если чтение прошло успешно, то значение переменной read_file равно 0.
- Если чтение файла было успешным, то выполняется блок кода внутри фигурных скобок.
- В данном случае, код внутри фигурных скобок отсутствует, поэтому выполнение программы прекращается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д