指定されたファイル (辞書) から単一の文字列に単語を読み取り、その文字列を文字列配列の n 番目のインデックスに割り当てます。しかし、うまくいきません。main()
is always e3V\347
etc. の for ループの出力と、常にcreateWordTable()
辞書の最後の単語である for ループの出力。これが私のコードです
char** createWordTable();
char** createTable();
int main()
{
int i;
char **hashTable;
hashTable = createTable();
hashTable = createWordTable();
for (i=0; i< 338; i++) {
printf("%s \n",hashTable[i]);
}
return 0;
}
char** createWordTable(){
char word[20],**table;
FILE *dicFile;
table = createTable();
dicFile = fopen("smallDictionary.txt", "r");
if (dicFile == NULL) {
perror("error");
}
int wordCount = 0,endFile = 1;
while (endFile != EOF) {
endFile = fscanf(dicFile,"%s",word);
table[wordCount] = word;
wordCount = wordCount+1;
}
for (int i=0; i< 338; i++) {
printf("%s \n",table[i]);
}
return table;
}
char** createTable(){
char **table;
int i;
table = (char **)malloc(338 * sizeof(char *));
for (i=0; i<=338; i++) {
*table = (char *)malloc(25 * sizeof(char));
}
return table;
}
コードをこれとその作業に変更しました!グローバル変数「テーブル」を定義し、ポインターを削除しました(動的割り当て関数も)。このコードでは、C の文字列の配列でポインターが機能しないのはなぜですか (角かっこも「ポインター」を意味することはわかっています)。整数配列で悪い経験がないからです。下手な英語で申し訳ありませんが、ここに新しいコードがあります:`
char ワード[338][10];
int main()
{
createWordTable();
for (int i=0; i< 338; i++) {
printf("%s \n",words[i]);
}
return 0;
}
ボイド createWordTable(){
char word[20];
FILE *dicFile;
dicFile = fopen("smallDictionary.txt", "r");
if (dicFile == NULL) {
perror("error");
}
int wordCount = 0;
while (!feof(dicFile)) {
fscanf(dicFile,"%s",word);
if(feof(dicFile)) break;
strcpy(words[wordCount], word);
wordCount = wordCount+1;
}
fclose(dicFile);
}`