首页 > 解决方案 > 同时使用 malloc 和 FILE 指针时出错

问题描述

所以,我要做的是初始化一个无符号整数缓冲区,并使用文件指针(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);
}

预期的输出是以整数形式存储并打印在屏幕上的文件内容。

我收到的是分段错误并且没有输出。

标签: cfilepointersmalloc

解决方案


推荐阅读