-2
這樣做我有很多困難!我所做的是第一行初始化指針數組,然後想要將這些塊指向包含文本文檔中字符串的變量。然而;即使我將所有值讀入數組,它們都指向與文件正在讀取時相同的變量。有沒有辦法我可以將這些值複製到數組中,而不必在文件正在讀取時指向變化的行?將文件一行一行讀入C中的一個數組
int main(void){
FILE * fp;
char line[256];
int i = 0;
int digit = 0;
fp = fopen("testfile","r");
if(fp == NULL){
printf("Cannot Open File");
}
fgets(line,sizeof(line),fp);
digit = atoi(line);
printf("digit = %d\n",digit);
char *rest[digit];
while(!feof(fp)){
while (i < digit){
fgets(line,sizeof(line),fp);
fgets(line,sizeof(line),fp);
printf("line = %s",line);
char arr[sizeof(line)+1];
strcpy(arr,line);
rest[i] = arr;
printf("restaurant = %s",rest[i]);
i++;
}
文本文件如下:
6
Outback Steakhouse
Red Robin
Max & Erma’s
Chipotle
Panera
BW3
8
Stephanie 5 3 2 4
Chris 4 6 5 1
Peter 5 2 4 1
Josh 1 4 3 6
Jessica 5 2 3 4
Al 6 4 2 3
Adam 5 1 3 2
Eric 1 4 3 5
'rest [i] = arr;'這只是將數組中的每個條目指向同一個緩衝區。所以當然每個條目的結果都是相同的字符串。您需要爲每個字符串分配獨立的內存緩衝區。 – kaylum
爲什麼在這段時間之後兩次調用fgets(我<數字)。你將會丟掉一半數據。 –
看看http://stackoverflow.com/a/19174415和http://stackoverflow.com/a/4237107 –