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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Syao
0 / 0 / 0
Регистрация: 20.10.2009
Сообщений: 6
#1

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

29.03.2010, 12:28. Просмотров 616. Ответов 4
Метки нет (Все метки)

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

Как можно упаковать длинную строку? - C++
Привет всем! Мне требуется сжать строку. Предположим, что строка из 1000 символов(может быть меньше/больше), нужно сжать чем...

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

Перевести длинную бинарную строку в строку с десятичными цифрами - C++
Добрый день. Проблема следующая: есть бинарное число 11010111010111111110.......11100011010110110 - необходимо его представить в виде...

Как ввести строку с пробелами - C++
char s1; char s2; int a; cin.getline(s1,50); cin>>a; cin.getline(s2,50); Не вводит...

Как ввести с клавиатуры строку - C++
Добрый день. У меня есть строка в которой 6000 тысяч символов, конец строки '\r\n'. Как записать все 6 тысяч символов в string...

Как заново ввести строку - C++
Всем доброго времени суток. Столкнулся с такой проблемой (Я ОЧЕНЬ начинающий). Нужно заново ввести строку и её потом сравнить на кратность....

4
ggmann
20 / 20 / 1
Регистрация: 06.10.2008
Сообщений: 173
29.03.2010, 12:32 #2
а vector не подходит?
0
Syao
0 / 0 / 0
Регистрация: 20.10.2009
Сообщений: 6
29.03.2010, 12:41  [ТС] #3
Эта задача в книге во введении и к этому моменту там (как раз в этой главе) только ввод строк в массивы разобран. Вот мне и интересно, может там есть какой нибудь трюк, до которого я не додумался...
0
ggmann
20 / 20 / 1
Регистрация: 06.10.2008
Сообщений: 173
29.03.2010, 13:14 #4
а можеш показать код "главный модуль программы определения самой длинной строки"
0
Syao
0 / 0 / 0
Регистрация: 20.10.2009
Сообщений: 6
29.03.2010, 13:34  [ТС] #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;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.03.2010, 13:34
Привет! Вот еще темы с ответами:

Как ввести строку неизвестной длины - C++
Подскажите пожалуйста: у меня есть переменная: char chislo = &quot;&quot;; //Вводимое число неизвестной длины я пытаюсь ее ввести с клавиатуры с...

Как правильнее ввести текстовую строку - C++
почему стандартный ввод небезопасен? что лучше делать так char str; char *s; s = gets( str ); почему лучше так?

Как ввести из консоли строку известной длины? - C++
Как ввести из консоли строку известной длины? Потоком.

Найти максимально длинную строку - C++
такая проблема, я ввожу имя, фамилию, и отчество, после высчитывается где сколько символов, и выводит мне их, а мне нужно вытащить большее...


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

Или воспользуйтесь поиском по форуму:
5
Yandex
Объявления
29.03.2010, 13:34
Ответ Создать тему
Опции темы

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