Отбрасывание строки заголовка - PullRequest
0 голосов
/ 14 апреля 2019

У меня есть файл .tsv, который я непосредственно ввожу в свой код или что-то, что вы говорите, используя «<» после компиляции моего кода, который читает файл.Вместо любого fopen я просто использую scanf по всему коду для чтения строк данных.Заголовок состоит из 3 не двойных символов, которые должны быть прочитаны, а затем выброшены, чтобы я мог затем поместить каждый из двойных чисел под 3 столбцами в отдельные массивы. </p>

Я не могу получить свойкод, чтобы пропустить первую строку ввода из файла .tsv, а затем перейти к фактическому захвату 3 двойных и помещению их в 3 отдельных массива.

int main(int argc, char *argv[])
{

    int i = 0;
    double X[MAX], Y[MAX], KG[MAX];
    void data_lines();
    while (scanf("%lf%lf%lf",&X[i],&Y[i],&KG[i] )== 3) {
        printf("%lf%lf%lf\n", X[i],Y[i],KG[i]);
        i++;
    }
    printf("%d", MAX);
    return 0;
}

void 
data_lines() {
    char ch;
    while (scanf("%c",&ch)!=EOF) {
        if (ch == '\n'){
            return;
        }
    }
}

Когда я вывожу этот код, все, что я получаю, это 999распечатаны.Поэтому я предполагаю, что в мои массивы ничего не входит, и первая строка данных не пропускается.

1 Ответ

0 голосов
/ 16 апреля 2019

Следующий предложенный код:

  1. безупречная компиляция
  2. выполняет желаемую функциональность

Обратите внимание на прямую ссылку / прототип

Обратите внимание, как подфункция называется

Обратите внимание, как файл заголовка: stdio.h включен

Обратите внимание на определение значения MAX

, и теперь предложенныйкод:

// the header file needed for the function: scanf() and function: printf() and the value: EOF
#include <stdio.h>

// define a value and give it a meaningful name
#define MAX 50

// prototypes  notice the prototype has 'void' but the actual function has nothing between the parens
void data_lines( void );

// notice the signature when the parameters are not used
int main( void )
{
    int i = 0;
    double X[MAX], Y[MAX], KG[MAX];

    // call the sub function
    // which returns nothing and has no parameters
    data_lines();

    while (scanf("%lf%lf%lf",&X[i],&Y[i],&KG[i] )== 3) 
    {
        printf("%lf%lf%lf\n", X[i],Y[i],KG[i]);
        i++;
    }
    printf("%d", MAX);
    return 0;
}


void data_lines() 
{
    char ch;
    while (scanf("%c",&ch)!=EOF) 
    {
        if (ch == '\n')
        {
            return;
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...