The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Почему не работает пример из книги, !*! kom, 18-Июл-06, 18:12  [смотреть все]
Помогите плиз, почему у меня не работает эта программа
книга ЯЗЫК С Б.В. Керниган, Д.М. Ричи .

#define eof -1
#define  maxline  1000 /* maximum input
       line size */
main()  /* find longest line */
{
int len; /* current line length */
int max; /* maximum length seen so far */
char line[maxline]; /* current input line */
char save[maxline]; /* longest line, saved */

max = 0;
while ((len = getline(line, maxline)) > 0)
     if (len >  max) {
    max = len;
    copy(line, save);
     }
     if (max > 0)   /* there was a line */
    printf("%s", save);
}
getline(s,lim) /* get line into s,return length */
char s[];
int lim;
{
    int c, i;

    for(i=0;i<lim-1 && (c=getchar())!=eof && c!='\n';++i)
    s[i] = c;
    if (c == '\n')  {
  s[i] = c;
  ++i;
    }
    s[i] = '\0';
    return(i);
}

copy(s1, s2)    /* copy s1 to s2;
               assume s2 big enough */
char s1[], s2[];
{
int i;

i = 0;
while ((s2[i] = s1[i]) != '\0')
    ++i;
}
      

  • Почему не работает пример из книги, !*! vnp, 00:17 , 19-Июл-06 (1)
    >Помогите плиз, почему у меня не работает эта программа
    >книга ЯЗЫК С Б.В. Керниган, Д.М. Ричи .

    Не мешало бы пояснить, как она не работает...

  • Почему не работает пример из книги, !*! phpcoder, 06:20 , 19-Июл-06 (2)
    >#define eof -1

    Это можно не определять и использовать EOF из stdio.h

    > main()  /* find longest line */

    int main(int argc, char *argv[])

    Также, перед использованием ф-ии getline() и copy() нужно их объявить явно или использовать прототип:

    int getline(char s[], int lim);
    void copy(char s1[], char s2[]);

    > getline(s,lim) /* get line into s,return length */
    > char s[];
    > int lim;

    int getline(char s[], int lim)

    >    for(i=0;i<lim-1 && (c=getchar())!=eof && c!='\n';++i)

    Вы используете getchar() из стандартной библиотеки, а занечит должны подключить файл stdio.h

    > copy(s1, s2)    /* copy s1 to s2;
    >            
    >   assume s2 big enough */
    > char s1[], s2[];

    void copy(char s1[], char s2[])


    Это то что бросилось в глаза с первого взгляда. Исправьте это и, если не будет работать, то пожалуйста приведите также сообщение с ошибками -- так нам будет легче вам помочь. (потому что телепаты всё ещё в отпуске ;)) )


    • Почему не работает пример из книги, !*! kom, 10:45 , 19-Июл-06 (3)
      >Это то что бросилось в глаза с первого взгляда. Исправьте это и,
      >если не будет работать, то пожалуйста приведите также сообщение с ошибками
      >-- так нам будет легче вам помочь. (потому что телепаты всё
      >ещё в отпуске ;)) )
      хм... эта программа из книги как я и выше написал книга "ЯЗЫК С" Б.В. Керниган, Д.М. Ричи
      программа компилиться без ошибок, но сама программа не работает, я просто не очень разбираюсь в "си" так как начал изучать, но думаю программа виснит в каком то условии


      • Почему не работает пример из книги, !*! phpcoder, 11:40 , 19-Июл-06 (4)
        >но думаю программа виснит в каком то условии

        Это хороший повод для вас познакомиться с отладчиком gdb ;-))


      • Почему не работает пример из книги, !*! Мимо проходил, 12:47 , 19-Июл-06 (5)
        >>Это то что бросилось в глаза с первого взгляда. Исправьте это и,
        >>если не будет работать, то пожалуйста приведите также сообщение с ошибками
        >>-- так нам будет легче вам помочь. (потому что телепаты всё
        >>ещё в отпуске ;)) )
        >хм... эта программа из книги как я и выше написал книга "ЯЗЫК
        >С" Б.В. Керниган, Д.М. Ричи
        >программа компилиться без ошибок, но сама программа не работает, я просто не
        >очень разбираюсь в "си" так как начал изучать, но думаю программа
        >виснит в каком то условии

        вы так и не пояснили - как она не работает..
        по идее, если вы вместо ввода новой строки просто нажмёте Ctrl-D (eof),
        она напечатает строку и завершится. То есть завешение программы - enter,Ctrl-d




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру