単純なファイルを1行ずつ読み込んでその内容を配列に保存します。ソースコードをコンパイルすると、次のエラーが表示されます。リターンで 'char(*)[1024]'を 'char *'に変換できません
test.C: In function ‘char* read_file(int, int, const char*)’:
test.C:14:11: error: cannot convert ‘char (*)[1024]’ to ‘char*’ in return
return words;
^
これはどういう意味ですか? 2D配列のポインタを返すことができないのはなぜですか?ここにソースコードがあります。
#include <stdio.h>
#include <string.h>
char * read_file(int buf, int size, const char *fname){
char words[size][buf];
FILE *fptr = NULL;
int idx = 0;
fptr = fopen(fname, "r");
while(fgets(words[idx], buf, fptr)) {
words[idx][strlen(words[idx]) - 1] = '\0';
idx++;
}
return words;
}
int main(void) {
char * words;
words = read_file(1024, 100, "text.txt");
int i;
for(i = 0; i < 100; ++i)
printf("%s\n", words[i]);
}
'char型の言葉[サイズ] [BUF];' - 自動ストレージ、> GONE <返品後。 –
この変換エラーに関係なく、これが何をしようとしているかはわかりません。ラシャネのコメントのリンクは重要です。 – WhozCraig