[英]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.