char *arr[512][lineCount];
while(lineCount > 0){
char *savedLine = malloc(512);
while(1){
fread(savedLine, 1, 1,fd);
if(savedLine != '\n'){
arr = savedLine;
}else{
break;
}
}lineCount --;
}
文字を1行ずつ格納する2Dのchar配列を作成しようとしています。 私はfgetsを使用することができませんので、freadを使用して、一度に1つの文字を格納して、'\n'
に達するまでしました。しかし、ポインタと整数(savedLine != 'n'
)を比較できず、配列型が代入不可(char *arr[512][lineCount]
)であると言ってコンパイルされません。残りの変数は私のコードで宣言されています。freadを使用してcharを2次元配列に保存するにはどうすればよいですか?
これらの寸法は特に乱雑に見えます。 charへのポインタの配列の配列であってはなりません。何かあれば、charへのポインタのVLAでなければなりません。つまり、char * arr [512] [lineCount];を 'char * arr [lineCount];'に変更することから始めます。また、あなたのリストを作成している間に、 'arr'のインデックスにゼロから始まる昇順のカウンターがあります。最後に、[fgets](http://en.cppreference.com/w/c/io/fgets)はおそらく、1行ごとの作業に適しています。 – WhozCraig
コンパイラの警告を有効にしてください。 'savedLine!= '\ n''は他のものと同様に警告する必要があります:文字定数へのポインタの比較。 – chux