簡體   English   中英

使用指針讀取值

[英]Reading in values using pointers

我有以下代碼,我想知道如何將文本文檔的每一行存儲到一個指針數組中。 我想即時關閉,但出現了一些錯誤。

#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;
}

您的array應該是一個指針數組。 您有行(因此是行數組),每行是一個C字符串(指向NUL終止的char數組的指針)。 因此,您需要將變量聲明為char **array = NULL

現在,每次讀取一行時,都必須在行數組中分配一個新條目,這樣array=realloc(array,(size+1)*sizeof(char *))然后讀取一個緩沖區,分配內存以存儲使用array[size]=malloc(strlen(buffer)+1)讀取的字符串,然后復制strcpy(array[size],buffer)然后增加size++

您必須相應地釋放所有內容(釋放所有指針,然后釋放數組)。 另外,要注意大小,緩沖區為50,但是您嘗試讀取150 ...保持一致。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM