Как прочитать только первое значение файла, а затем перейти к следующей строке? - PullRequest
2 голосов
/ 24 сентября 2019

Итак, я пишу программу, которая считывает данные из входного файла и распечатывает их.

Одна из моих задач - сохранить общее количество записей (10) и проверить, какое число повторяется чаще всего..

Пример входного файла состоит из этого;

1265 -37.817365 144.968783 6/8/19 10 1726 -37.810009 144.962800 6/8/19 10 1726 -37.809657 144.965221 6/8/19 11 1726 -37.867842 144.976916 6/8/19 14 1328 -37.913256 144.985346 6/8/19 14 1265 -37.822464 144.968863 6/8/19 14 1654 -37.830386 144.979659 9/8/19 11 1726 -37.822464 144.968863 1/9/19 14 1654 -37.817365 144.968783 1/9/19 15 1408 -37.845590 144.971467 1/9/19 16

Теперь единственное число, которое я хочу проверить, - это первое значение, и видно, какое из этих чиселподходит больше всего и печатает этот номер.Из этого файла это будет номер 1726.

Я новичок в массивах и хранилище, но это то, что у меня есть до сих пор;

int i=0;
int num;
int integers [256];
while(fscanf(stdin, "%d", &num) > 0) {
    integers[i] = num;
    i++;
}
printf("\n%d", num);

Куда мне идти отсюда?Я довольно застрял и не уверен, как достичь желаемого результата.

1 Ответ

2 голосов
/ 24 сентября 2019

Вы, вероятно, хотите что-то вроде этого:

...
int i=0;
int num;
int integers [256];
char linebuffer[100];
while(fgets(linebuffer, sizeof linebuffer, stdin) != NULL)
{
  if (sscanf(linebuffer, "%d", &num) == 1)
  {
    integers[i] = num;
    i++;
  }
}
...

Это непроверенный код, могут быть ошибки, но вы должны понять.Особенно, если файл содержит более 256 строк, вы можете получить переполнение индекса массива и, следовательно, неопределенное поведение.

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