我創建這段代碼在C逐行讀取文本文件線和每行存儲到陣列的位置:C:如何將字符串存儲到「char * myArray [100]」數組中?
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
static const int MAX_NUMBER_OF_LINES = 100000;
static const char filename[] = "file.csv";
int main (void)
{
// Read file and fill the Array
char *myArray[MAX_NUMBER_OF_LINES];
int numberLine = 0;
FILE *file = fopen (filename, "r");
if (file != NULL)
{
char line [128];
while (fgets (line, sizeof line, file) != NULL)
{
myArray[numberLine] = line;
numberLine++;
}
fclose (file);
}
// Print the Array
for (int i = 0; i<numberLine; i++)
{
printf("%d|%s", i, myArray[i]);
}
}
但是打印陣列時,它是空的。我究竟做錯了什麼?
該數組只能存儲指向字符串的指針,它不能存儲字符串。究竟是哪裏出了問題,每個元素指向相同的變量。考慮strdup()。 –
當你嘗試打印它時,該變量不再存在,因爲它是「if」塊的本地。 –
投票了任何有用的答案,並選擇最佳答案作爲接受 –