Чтение файла - 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) {

Объяснение кода листинга программы

  1. Входные данные: pFile - указатель на файл, pReadData - указатель на структуру данных, которая будет заполнена при успешном чтении файла.
  2. Вызов функции read_file(pFile, &pReadData), где pFile - это указатель на файл, а &pReadData - это указатель на структуру данных, в которую будут записаны данные из файла.
  3. Оператор сравнения if(read_file(pFile, &pReadData) == 0) проверяет, успешно ли было выполнено чтение файла. Если чтение прошло успешно, то значение переменной read_file равно 0.
  4. Если чтение файла было успешным, то выполняется блок кода внутри фигурных скобок.
  5. В данном случае, код внутри фигурных скобок отсутствует, поэтому выполнение программы прекращается.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.917 из 5