Модераторы: xvr
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> простенькая прога на С, но есть вопрос 
V
    Опции темы
darkness
Дата 13.3.2007, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 173
Регистрация: 5.8.2006
Где: Москва

Репутация: нет
Всего: 1



В книге Брюса Моли "Теория и практика программирования под системы Unix/Linux - системы"

нашёл код примерно следующий код  - Плиз прокомментируйте два момента ПЛИЗ
Код

/* more -альтернатива */

#include <stdio.h>
#define PAGELEN 24
#define LINELEN 512

void do_more(FILE*);
int see_more();
int main(int ac, char *av[])   // второй параметр понятен - имя файла (чаровый массив), первый что есть? 
{
 FILE *fp;
 if (ac==1)
   do_more(stdin);
 else
   while (--ac)                                        
     if ((fp==fopen(*++av, "r"))!=NULL)        // и вот здесь смущает *++av   можно объяснить?
     {
       do_more(fp);
       fclose(fp);
     }
     else
       exit(1);
   return 0;
}

void do_more(FILE *fp)
{
  char line[LINELEN];
  int num_of_lines=0;
  int see_more(), reply;
  while (fgets(line, LINELEN, fp))
      {
        if (num_of_lines==PAGELEN)
             {
               reply=see_more();
               if (reply==0)
                 break;
               num_of_lines-=reply;
              }
        if (fputs(line, stdout)==EOF)
           exit(1);
        num_of_lines++;
      }
}

int see_more()
{
  int c;
  printf("\033[7 more? \033[m");
  while((c=getchar())!=EOF)
    {
      if (c=='q')
         return 0;
    //  if (c=='')
    //     return PAGELEN;
      if (c=='\n')
         return 1;
     }
   return 0;
}

 

--------------------
Вина каких стран Вы предпочитаете в это время суток?     (Булгаков. "Мастер и Маргарита") 
PM MAIL   Вверх
Fazil6
Дата 13.3.2007, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 1
Всего: 60



Цитата(darkness @  13.3.2007,  10:41 Найти цитируемый пост)
// второй параметр понятен - имя файла (чаровый массив), первый что есть?

1-й количество параметров
2-й массив строк (командная строка разбивается пробелами и помещается в это массив)
Цитата(darkness @  13.3.2007,  10:41 Найти цитируемый пост)
// и вот здесь смущает *++av   можно объяснить?

проход по массиву параметров. Предполагается, что в коммандной строке передаются имена файлов

*++av выдаст значение следующего элемента в масиве (вначале av указывает на нулевой  элемент и эта конструкция выдаст значение 1-го элемента в масиве, после этого av будет указывать на 1-й элемент и на следующей итерации выдаст 2-й и т.д. )
PM MAIL   Вверх
darkness
Дата 13.3.2007, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 173
Регистрация: 5.8.2006
Где: Москва

Репутация: нет
Всего: 1



Fazil6, спасибо!
--------------------
Вина каких стран Вы предпочитаете в это время суток?     (Булгаков. "Мастер и Маргарита") 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




[ Время генерации скрипта: 0.0394 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.