ручные продолжающиеся петли - PullRequest
0 голосов
/ 29 августа 2009

У меня есть файл, в котором каждая строка состоит из нескольких слов и числа. Я хотел бы прочитать файл, по одной строке за раз, показывая только слова. Затем программа должна дождаться нажатия клавиши и отобразить число на определенной клавише, а затем перейти к следующей строке без отображения числа в случае по умолчанию. Моя проблема в том, что единственное решение, которое я нашел, отображает строку next с номером, а не с текущим. Вот неисправный код;

  FILE *file = fopen("randwords", "r");
  if(file)
  {
    char line[64];
    while(fgets(line, sizeof line, file))
    {
      ch = getch();
      clear();
      if(ch == 'q') break;
      if(ch == 'z') s = 1;
      move(LINES/2, (COLS - 20)/2);
      for(i=0; i < strlen(line); i++)
      {
        if(!s && line[i] >= '0' && line[i] <= '9') break;
        addch(line[i]);
      }
      s = 0;
    }
    fclose(file);
    system("rm randwords");
  }

Ответы [ 2 ]

2 голосов
/ 29 августа 2009

используйте ftell () и fseek (), чтобы перечитать строку. Вам понадобится переменная для хранения предыдущей позиции файла.

1 голос
/ 29 августа 2009

Вот что вы делаете:

read line
wait for key
print *full* line if key was 'z'
    or print words only otherwise

Обратите внимание, что вы ожидаете ключ без строки, отображаемой в первый раз в цикле, или, как вы говорите, со строки из последнего прохода в цикле.

Вот что вы должны делать:

read line
print words only
wait for key
if key was 'z'
    print rest of line
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...