На предыдущие вопросы все ответы нашёл, благодаря форуму. Спасибо всем ответившим!Но появился ещё вопрос. Из желания упростить функцию решил разделить её ещё на несколько. Допустим есть файл, в нём есть строчки-комментарии. На них реакция - пропуск всего-чего-попало до '\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;
}Как всё это должно выглядеть? Так как только пересел от книжек практиковать, то возможны ошибки, за что прошу прощения. Как правильно передать управление другой функции, доступ к файлу и вернуться из функции...
Почитал другие сообщения, кажись я не вписываюсь в рамки со своими вопросами... ;-) Может у кого где-нить на ftp завалялись книги по СИ? Киньте ссылки, пожалуйста! ;-)
После некоторого отдыха написал всё-таки... Получилось так (см. ниже). Будут ли с этим какие-то глюки со временем? Или это вполне нормальный вариант? ;-)#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;
}
Может тебе проще, например, flex-ом воспользоваться?
>После некоторого отдыха написал всё-таки... Получилось так (см. ниже). Будут ли с
>этим какие-то глюки со временем? Или это вполне нормальный вариант? ;-)
>
>
>#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 - читай сразу целую строку, а потом анализируй ее