使用指针读取值

时间:2015-02-18 19:54:39

标签: c pointers allocation

我有以下代码,我想知道如何将文本文档的每一行存储到指针数组中。我想我很接近,但我得到了一些错误。

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

int main()
{

    FILE * fp;
    char buffer[50];
    int totalSize;
    totalSize = 6;
    int size = 0;
    char * array;

    fp = fopen(location,"r");


    while (fgets(buffer,150,fp) != NULL)
    {
        array = malloc(sizeof(strlen(buffer))+1);
        strcpy(array[size],buffer);
        size++;
    }

    for (int x = 0; x < size ; x++)
    {
        printf("%s",array[x]);
    } 

    free(array);
    return 0;
}

1 个答案:

答案 0 :(得分:1)

你的array应该是一个指针数组。你有行(所以是一个行数组),每行是一个C字符串(一个指向NUL终止字符数组的指针)。 因此,您需要将变量声明为char **array = NULL

现在,每次读取一行时,必须在行数组中分配一个新条目,这样array=realloc(array,(size+1)*sizeof(char *))然后读取缓冲区,分配内存以存储用array[size]=malloc(strlen(buffer)+1)读取的字符串然后复制strcpy(array[size],buffer)然后增加size++

你必须相应地释放一切(释放所有指针然后释放数组)。另外,请注意尺寸,缓冲区为50,但您尝试阅读150 ...保持一致。