Чтение чисел между разделителями из файлов - PullRequest
0 голосов
/ 23 апреля 2020

Мне нужно прочитать числа из файла, которые разделены парантезом или разными символами, например:

(58) [787 "{91} (-66]

Есть между числами и их разделителями всегда есть пробел. Что было сделано до сих пор:

fgets(line, MAXLINE, source.txt)
line[strlen(line) - 1] = '\0';
value = strtok(line, " ");
while(value != NULL)
{
    nr = 0;
    for(i = 1; i < strlen(value) - 1; i++)
        nr = nr * 10 + value[i] - '0';
    value = strtok(NULL, " ");
}

К сожалению, мой подход не работает для отрицательных чисел или десятичных дробей. Я подозреваю, что есть лучший способ сделать это с регулярным выражением. Ваша помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 24 апреля 2020

Поскольку вы должны читать числа из файла , вы можете оставить работу по проверке наличия номера для функции чтения и преобразования файлов. Этот пример находит все числа в стандартном потоке ввода:

#include <stdio.h>

int main()
{
    float number;
    do  switch (scanf("%f", &number))   // try to read a number
        {
        case 0: getchar();  break;      // failure - skip character
        case 1: printf("%f\n", number); // success - print number
        }
     while (!feof(stdin));
}

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