Ошибка при совместном использовании malloc и FILE указателя - PullRequest
0 голосов
/ 09 мая 2019

Итак, я пытаюсь инициализировать целочисленный буфер без знака, а также использовать указатель файла (FILE * fp) для чтения из файла и сохранения содержимого файла в указанном выше буфере

Дело в том, что проблема не возникает, когда я не использую malloc () и определяю буфер как целочисленный массив без знака

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define SIZE 10000

void main()
{
    unsigned int i = 0;
    unsigned int *buffer = (unsigned int*)malloc(sizeof(unsigned int)*SIZE);
    unsigned int c;
    unsigned int length = 0;

    FILE *fp = fopen("testfn.c", "r");
    if (fp == NULL) {
        printf("\nFile not found.\nExiting...");
        exit(1);
    }

    while ((c = fgetc(fp)) != EOF)
    {
        buffer[i] = c;
        ++i;
    }

    length = i;
    printf("\nNumber of elements= %d\n", length);

    for (i = 0; i <= length; ++i)
        printf("%c ", buffer[i]);

    fclose(fp);
}

Ожидаемый вывод - это содержимое файла, которое хранится в виде целых чисел и выводится на экран.

То, что я получаю, является ошибкой сегментации и не выводится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...