Я пытаюсь сохранить список строк из файла в массив в C - PullRequest
0 голосов
/ 18 февраля 2020

Я пытаюсь прочитать файл, содержащий список слов, и сохранить их в массиве. После сохранения я случайно попытался напечатать 10-й элемент, чтобы убедиться, что код сделал то, что должен, но у меня ничего не получилось. Я также получаю следующее предупреждение и не понимаю, о чем оно говорит:

предупреждение: присваивание 'char' из 'char *' делает целое число из указателя без приведения [-Wint-преобразование ] 22 | dict [i] [j] = word_scanned;

#include <stdio.h>

#include <stdlib.h>

int main() {

    char word_scanned[50];

    char dict[102402][50];

    int i,j;

    FILE *fptr;

    if ((fptr = fopen("/usr/share/dict/words", "r")) == NULL) {

        printf("Error! opening file\n");

        // Program exits if file pointer returns NULL.

        exit(1);

    }


   for(i=0; !feof(fptr); i++){

        fscanf(fptr,"%s", word_scanned);

       for (j=0; j<50; j++){

            dict[i][j]=word_scanned;  

       }

   }

    printf("%s\n",dict[9]);

    fclose(fptr);

    return 0;  
}

1 Ответ

0 голосов
/ 18 февраля 2020

dict[i][j]=word_scanned[j]; - это ответ.

Но также читайте о strncpy, а также к вашему сведению fscanf(fptr,"%s", word_scanned); не безопаснее, чем прямое сканирование в fscanf(fptr,"%s", dict[i]);, поскольку word_scanned также имеет длину 50 байт. Любая строка длиной более 50 символов вызовет ошибку памяти, поэтому этот дополнительный буфер не помогает вообще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...