URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 815
[ Назад ]

Исходное сообщение
"Всем  спасибо, но наткнулся на ещё одну проблемку... ;-))))"

Отправлено Alexander , 27-Июн-02 20:54 
На предыдущие вопросы все ответы нашёл, благодаря форуму. Спасибо всем ответившим!

Но появился ещё вопрос. Из желания упростить функцию решил разделить её ещё на несколько. Допустим есть файл, в нём есть строчки-комментарии. На них реакция - пропуск всего-чего-попало до '\n'. Как это организовать? ;-)
Допустим:

#include <stdio.h>

int skip_line(???) {
???
return 0;
}

int main() {
FILE *fd;
fd = fopen("file", "r");
switch (fgetc(fd)) {
  case '#':
   skip_line(???);
   break;
  default:
}
close(fd);
return 0;
}

Как всё это должно выглядеть? Так как только пересел от книжек практиковать, то возможны ошибки, за что прошу прощения. Как правильно передать управление другой функции, доступ к файлу и вернуться из функции...


Содержание

Сообщения в этом обсуждении
"Вывод..."
Отправлено Alexander , 27-Июн-02 21:24 
Почитал другие сообщения, кажись я не вписываюсь в рамки со своими вопросами... ;-) Может у кого где-нить на ftp завалялись книги по СИ? Киньте ссылки, пожалуйста! ;-)

"RE: Всем  спасибо, но наткнулся на ещё одну проблемку... ;-))))"
Отправлено Alexander , 28-Июн-02 07:49 
После некоторого отдыха написал всё-таки... Получилось так (см. ниже). Будут ли с этим какие-то глюки со временем? Или это вполне нормальный вариант? ;-)

#include <stdio.h>

int skip_line(fd)
FILE *fd;
{
while (feof(fd) == 0 && fgetc(fd) != '\n');
return 0;
}

int main() {
FILE *fd;
fd = fopen("file", "r");
switch (fgetc(fd)) {
  case '#':
   skip_line(fd);
   break;
  default:
}
close(fd);
return 0;
}


"RE: Всем  спасибо, но наткнулся на ещё одну проблемку... ;-))))"
Отправлено SergCh , 28-Июн-02 13:04 
Может тебе проще, например, flex-ом воспользоваться?

"RE: Всем  спасибо, но наткнулся на ещё одну проблемку... ;-))))"
Отправлено LS , 28-Июн-02 13:41 
>После некоторого отдыха написал всё-таки... Получилось так (см. ниже). Будут ли с
>этим какие-то глюки со временем? Или это вполне нормальный вариант? ;-)
>
>
>#include <stdio.h>
>
>int skip_line(fd)
> FILE *fd;
>{
> while (feof(fd) == 0 && fgetc(fd) != '\n');
> return 0;
>}
>
>int main() {
> FILE *fd;
> fd = fopen("file", "r");
> switch (fgetc(fd)) {
>  case '#':
>   skip_line(fd);
>   break;
>  default:
> }
> close(fd);
> return 0;
>}


пользуй лучше fgets - читай сразу целую строку, а потом анализируй ее