Форум программистов, компьютерный форум CyberForum.ru

Как в C ввести скольугодно длинную строку? - C++

Восстановить пароль Регистрация
 
Syao
0 / 0 / 0
Регистрация: 20.10.2009
Сообщений: 6
29.03.2010, 12:28     Как в C ввести скольугодно длинную строку? #1
Читаю K&R, задача 1.16:
Доработайте главный модуль программы определения самой длинной строки так, чтоб она выводила правильное значение для какой угодно длины строк входного потока, насколько это позволяет текст.
Текст задачи привел на случай, если я задание не так понял. Вопрос собственно в том, как задать массив переменной длинны, чтоб с помощью getchar() в него можно было загнать строку какой угодно длинны?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.03.2010, 12:28     Как в C ввести скольугодно длинную строку?
Посмотрите здесь:

Как с помощью cin ввести нуль терминированную строку? C++
C++ Как ввести из консоли строку известной длины?
Перевести длинную бинарную строку в строку с десятичными цифрами C++
C++ Как используя командную строку ввести символьную строку?
Как ввести строку неизвестной длины C++
C++ Найти максимально длинную строку
Как ввести с клавиатуры строку C++
C++ Как можно упаковать длинную строку?
C++ Как заново ввести строку
C++ Как ввести строку с пробелами
Как правильнее ввести текстовую строку C++
Как в С++ сначала ввести строку, а потом посчитать её длину? C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ggmann
 Аватар для ggmann
20 / 20 / 1
Регистрация: 06.10.2008
Сообщений: 173
29.03.2010, 12:32     Как в C ввести скольугодно длинную строку? #2
а vector не подходит?
Syao
0 / 0 / 0
Регистрация: 20.10.2009
Сообщений: 6
29.03.2010, 12:41  [ТС]     Как в C ввести скольугодно длинную строку? #3
Эта задача в книге во введении и к этому моменту там (как раз в этой главе) только ввод строк в массивы разобран. Вот мне и интересно, может там есть какой нибудь трюк, до которого я не додумался...
ggmann
 Аватар для ggmann
20 / 20 / 1
Регистрация: 06.10.2008
Сообщений: 173
29.03.2010, 13:14     Как в C ввести скольугодно длинную строку? #4
а можеш показать код "главный модуль программы определения самой длинной строки"
Syao
0 / 0 / 0
Регистрация: 20.10.2009
Сообщений: 6
29.03.2010, 13:34  [ТС]     Как в C ввести скольугодно длинную строку? #5
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#include <stdio.h>
#define MAXLINE 1000 // Максимально допустимая длинна строки в потоке                                                                        
 
int lineget(char line[], int maxline);
void linecp(char to[], char from[]);
 
// Вывод самой динной строки в потоке.                                                                                                       
main()
{
  int len;                // Длинна текущей строки.                                                                                          
  int max;                // Длинна максимальной строки.                                                                                     
  char line[MAXLINE];     // Текущая введенная строка.                                                                                       
  char longest[MAXLINE];  // Самая длинная строка.                                                                                           
 
  max = 0;
  while ((len = lineget(line, MAXLINE)) > 0)
    if (len > max)
      {
    max = len;
        linecp(longest, line);
      }
 
  if (max > 0)  //Была не пустая строка.                                                                                                     
    printf("%s", longest);
 
  return 0;
}
 
// lineget: считывает строку в s, возвращает ее длинну.                                                                                      
int lineget(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;
}
 
// lineget: считывает строку в s, возвращает ее длинну.                                                                                      
int lineget(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;
}
 
// linecp: копирует строку 'from' в строку 'to'; длинна 'to' оказывается достаточной                                                         
void linecp(char to[], char from[])
{
  int i;
 
  i = 0;
  while ((to[i] = from[i]) != '\0')
    ++i;
}
Yandex
Объявления
29.03.2010, 13:34     Как в C ввести скольугодно длинную строку?
Ответ Создать тему
Опции темы

Текущее время: 17:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru