Как читать только цифры из текстового файла с fscanf в C - PullRequest
0 голосов
/ 28 апреля 2019

Для части моей программы мне нужно получить информацию из текстового файла с именем "options.txt".Этот файл выглядит так:

Team number 10
win point 2
draw point 1
lose point -1

Я написал этот код, но он заполняет массив опций только нулями:

int options[4];
getOptions(){
    FILE *filePtr;
    if((filePtr=fopen("options.txt","r"))==NULL){
        puts("file could not be opened");
    } else {
        for(i=0;i<4;i++) {
            fscanf(filePtr, "%d", &options[i] );
        }
    const int teamNumber=ayarlar[0]; //first element of the array is teamNumber
    struct teams team[teamNumber]; // teamNumber necessary for teams
}

1 Ответ

2 голосов
/ 28 апреля 2019

Вы можете использовать scanf("%*[^-0-9]"); для сканирования и удаления всех символов, которые не являются цифрами или -. Итак, ваш цикл выглядит так:

    for(i=0;i<4;i++) {
        fscanf(filePtr, "%*[-0-9]");
        if (fscanf(filePtr, "%d", &options[i] ) != 1)
            fprintf(stderr, "error reading file");
    }

Обратите внимание, что вы должны ВСЕГДА проверять возвращаемое значение scanf перед использованием любого из полученных значений, чтобы убедиться, что они были успешно прочитаны и преобразованы.

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