我正在阅读一个文件,想把每一行放入数组中的一个字符串。文件的长度是任意的,每一行的长度也是任意的(尽管假设它将小于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;
}
注意:我已经阅读了“从文件中读取并存储到数组中”但它没有回答我的问题。
%100s
将(a)跳过前导空格并在非空格字符后的空格处停止读取,并且(b)将超出大小为100的缓冲区一个字节,这可能很重要。您必须在转换规范中指定比数组大小少一个。 - Jonathan Leffler