Arti-Jack
@Arti-Jack

Почему не читаются числа, записанные в одну строку с разделением?

У меня есть текстовый файл.

Количество точек N:
21
Данные входного сигнала:
          tнач            tкон              U 
        -10.000          10.000         -30.000 
Данные предаточной характеристики:
           Up1             Up2
        -10.000        -100.000 
 
   №            t               Uvx            Uvix 
   1         -10.000            0.000            0.000
   2          -9.000           -3.000          -30.000
   3          -8.000           -6.000          -60.000
   4          -7.000           -9.000          -90.000
   5          -6.000          -12.000         -100.000
   6          -5.000          -15.000         -100.000
   7          -4.000          -18.000         -100.000
   8          -3.000          -21.000         -100.000
   9          -2.000          -24.000         -100.000
  10          -1.000          -27.000         -100.000
  11           0.000          -30.000         -100.000
  12           1.000          -27.000         -100.000
  13           2.000          -24.000         -100.000
  14           3.000          -21.000         -100.000
  15           4.000          -18.000         -100.000
  16           5.000          -15.000         -100.000
  17           6.000          -12.000         -100.000
  18           7.000           -9.000          -90.000
  19           8.000           -6.000          -60.000
  20           9.000           -3.000          -30.000
  21          10.000            0.000            0.000

Мне надо получить все данные из него. В том числе, перенести из таблицы данные в массивы.

Использую scanf, чтобы прочитать числа с файла:

FILE *f = fopen(File_Name, "r");
    //Подсчет кол-ва точек N
    int N = 0;
    char Sbuf[100];
    fgets(Sbuf, 100, f);
    fscanf(f, "%d", &N);

    fgets(Sbuf, 100, f);
    fgets(Sbuf, 100, f);
    fgets(Sbuf, 100, f);
    fgets(Sbuf, 100, f);
    fscanf(f, "%f%f%f\n", tn, tk, U);
    printf("%f\n", tn);
    fgets(Sbuf, 100, f);
    fgets(Sbuf, 100, f);
    fscanf(f, "%f%f", U1, U2);
    fgets(Sbuf, 100, f);

    fgets(Sbuf, 100, f);
    fgets(Sbuf, 100, f);
    int buf;
    for (int i = 0; i < N; i++)
        fscanf(f, "%d%f%f%f", &buf, &t[i], &Uvx[i], &Uvix[i]);

Но оно почему-то не считывается. В чём проблема?
  • Вопрос задан
  • 120 просмотров
Пригласить эксперта
Ответы на вопрос 1
Например, потому что после
fscanf(f, "%d", &N);
остается \n в буфере ввода.
Лучше не мешайте fgets и fscanf, из файла читайте всегда fgets'ом, а считанную в буффер строку разбирайте sscanf'ом.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы