Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.02.2012, 13:53   #1
Valdemar4ik
 
Регистрация: 21.02.2012
Сообщений: 3
Вопрос работа с символьными массивами на С

Код:
#include <STDIO.H>
#define MAXLINE 1000 /* максимальный размер вводимой строки */
  
int getline(char line[],int MAXLINE);
void copy(char to[], char from[]);
 
/* печать самой длинной строки */
main()
{
 int len; /* длина текущей строки */
 int max; /* длина максимальной из просмотренных строк */
 char line[MAXLINE]; /* текущая строка */
 char longest[MAXLINE]; /* самая длинная строка */
 
 max = 0;
 while (len = getline(line, MAXLINE)> 0)
  if (len > max) {
   max = len;
   copy(longest, line);
  }
 if (max > 0) /* была ли хоть одна строка? */
  printf("%s", longest);
 return 0;
}
 
 
/* getline: читает строку в s, возвращает длину */
int getline(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: копирует из 'from' в 'to'; to достаточно большой */
void copy(char to[], char from[])
{
 int i;
 
 i = 0;
 while ((to[i] = from[i]) != '\0')
  ++i;
}
Выдает такие ошибки:

c(3) : error C2143: syntax error : missing ')' before 'constant'
c(3) : error C2143: syntax error : missing '{' before 'constant'
c(3) : error C2059: syntax error : '<Unknown>'
c(3) : error C2059: syntax error : ')'
c(15) : warning C4013: 'getline' undefined; assuming extern returning int
c(31) : error C2146: syntax error : missing ';' before identifier '‹'
c(31) : error C2065: '‹' : undeclared identifier
c(31) : error C2146: syntax error : missing ')' before identifier 'lim'
c(31) : error C2059: syntax error : ')'
c(32) : error C2146: syntax error : missing ';' before identifier 's'

просьба помочь разобраться

Последний раз редактировалось ACE Valery; 23.02.2012 в 01:42.
Valdemar4ik вне форума Ответить с цитированием
Старый 21.02.2012, 14:03   #2
crymchanin
Пользователь
 
Аватар для crymchanin
 
Регистрация: 01.02.2012
Сообщений: 84
По умолчанию

Код:
#define MAXLINE 1000
+
Код:
int getline(char line[],int MAXLINE);
=
Код:
c(3) : error C2143: syntax error : missing ')' before 'constant'
crymchanin вне форума Ответить с цитированием
Старый 21.02.2012, 14:11   #3
EUGY
Форумчанин
 
Аватар для EUGY
 
Регистрация: 11.07.2010
Сообщений: 914
По умолчанию

и еще
for (i = 0; i /*‹*/< lim-1 && (c = getchar()) != EOF && c != '\n'; ++i)
EUGY вне форума Ответить с цитированием
Старый 22.02.2012, 15:39   #4
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Valdemar4ik, при оформлении сообщения, выделив код, нажимайте "решётку". С отступами код легче и приятнее читать.

С исправленными ошибками, озвученными товарищами ранее:
Код:
#include <STDIO.H>
#define MAXLINE 1000 /* максимальный размер вводимой строки */

int getline(char line[], int maxline);
void copy(char to[], char from[]);

/* печать самой длинной строки */
main()
{
    int len; /* длина текущей строки */
    int max; /* длина максимальной из просмотренных строк */
    char line[MAXLINE]; /* текущая строка */
    char longest[MAXLINE]; /* самая длинная строка */

    max = 0;
    while (len = getline(line, MAXLINE)> 0)
        if (len > max) {
            max = len;
            copy(longest, line);
        }

    if (max > 0) /* была ли хоть одна строка? */
        printf("%s", longest);

    return 0;
}

/* getline: читает строку в s, возвращает длину */
int getline(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: копирует из 'from' в 'to'; to достаточно большой */
void copy(char to[], char from[])
{
    int i;

    i = 0;
    while ((to[i] = from[i]) != '\0')
        ++i;
}
8Observer8 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с символьными строками drinkyahoo C++ Builder 3 22.01.2012 01:42
работа символьными данными Сайын Помощь студентам 7 05.05.2011 08:19
Работа с символьными цепочками antakov87 Паскаль, Turbo Pascal, PascalABC.NET 5 17.02.2011 11:14
Работа с числовыми и символьными массивами sssnake13 Паскаль, Turbo Pascal, PascalABC.NET 7 22.04.2010 11:06
Pascal.работа с символьными массивами и строками Иришка1989 Помощь студентам 3 19.01.2010 01:05