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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Как в С++ сначала ввести строку, а потом посчитать её длину? - C++
Как в С++ сначала ввести строку а потом посчитать её длину С библиотекой <string> и без неё?? Если я узнаю это я познаю дзен! Заранее...

Как с помощью cin ввести нуль терминированную строку? - C++
Как с помощью cin ввести "законченную" строчку, имеется в виду символ ноль. таким образов не вводится. какие есть варианты? cin >>...

Как на C++ ввести с консоли строку с пробелами в тип string? - C++
Нужно создать программу определяющую является ли строка палиндромом(т.е. одинаково пишется как слева направо так и справа налево)....


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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
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 ввести скольугодно длинную строку?
Ответ Создать тему
Опции темы

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