私はファイルを読んでいて、各行を配列の文字列に入れたいと思っています。ファイルの長さは任意で、各行の長さも任意です (ただし、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;
}
注:「ファイルから読み取り、配列に保存する」を読みましたが、私の質問には答えていません。