我正在讀取一個文件,並希望將每行放入數組中的一個字符串中。文件的長度是任意的,每行的長度是任意的(儘管假設它少於100個字符)。將文件的每一行讀入數組
這是我得到的,它不是編譯。從本質上講,這是一個字符數組的數組,對嗎?所以不應該是char** words = (**char)malloc(sizeof(*char));
?
#include <stdio.h>
#include <stdlib.h>
int main(){
int BUFSIZE = 32767;//max number of lines to read
char** words = (**char)malloc(sizeof(*char));//gives error: expected expression before 'char'
FILE *fp = fopen("coll.txt", "r");
if (fp == 0){
fprintf(stderr, "Error opening file");
exit(1);
}
int i = 0;
words[i] = malloc(BUFSIZE);
while(fscanf(fp, "%100s", words[i]) == 1)//no line will be longer than 100
{
i++;
words[i] = realloc(words, sizeof(char*)*i);
}
int j;
for(j = 0; j < i; j++)
printf("%s\n", words);
return 0;
}
注:我讀過「Reading from a file and storing in array」但它並沒有回答我的問題。
應該是char * ...你正在努力尋找字符指針的大小... – AurA
請注意,'%100s'將會(a)跳過前導空白並在非空白字符後的空白處停止讀取,並且(b)會將大小爲100的緩衝區溢出一個字節,這可能很重要。您必須在轉換規範中指定一個小於數組大小的值。 –