С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.96/56: Рейтинг темы: голосов - 56, средняя оценка - 4.96
1 / 1 / 5
Регистрация: 11.05.2013
Сообщений: 33
1

Как ввести строку неизвестной длины

26.02.2015, 15:35. Показов 11039. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Подскажите пожалуйста:
у меня есть переменная: char chislo[] = ""; //Вводимое число неизвестной длины
я пытаюсь ее ввести с клавиатуры с помощью: scanf_s("%s",chislo);
но она не вводится, что я делаю не так???
Прошу ответить с подробным описанием.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.02.2015, 15:35
Ответы с готовыми решениями:

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

Ввести строку произвольной длины. Распечатать середину 15 раз.
Доброго времени суток! Пожалуйста, подскажите решение: Ввести строку произвольной длины....

3. Ввести строку произвольной длины. Сосчитать количество слов в ней.
3. Ввести строку произвольной длины. Сосчитать количество слов в ней.

Ввести строку. Найти в функции в ней слово максимальной длины
Как засунуть всю задачу в функцию, так что бы вызвать ее с помощью меню? Задача: Ввести строку....

16
117 / 114 / 65
Регистрация: 18.09.2014
Сообщений: 337
26.02.2015, 15:41 2
frutty, пустые квадратные скобки означают, что размер массива будет равен количеству начальных значений
C++
1
2
int a[] = { 1, 10, 11, 56, 72 }; // Размер массива будет 5
char line[] = "abcdefg"; // Размер массива 7
Используйте тогда уж string
0
4820 / 2286 / 287
Регистрация: 01.03.2013
Сообщений: 5,970
Записей в блоге: 29
26.02.2015, 15:45 3
Цитата Сообщение от Гоблин-инженер Посмотреть сообщение
char line[] = "abcdefg"; // Размер массива 7
По моим заблуждениям 8. Я ошибаюсь?
0
1 / 1 / 5
Регистрация: 11.05.2013
Сообщений: 33
26.02.2015, 15:47  [ТС] 4
Цитата Сообщение от Гоблин-инженер Посмотреть сообщение
Используйте тогда уж string
Напишите пожалуйста как это реализовать через стринг?какие библиотеки и т.д. с коментариями, если не трудно)
0
117 / 114 / 65
Регистрация: 18.09.2014
Сообщений: 337
26.02.2015, 15:49 5
_Ivana, имеется в виду, что массив для хранения 7 символов. Или я что-то недопонимаю?

Добавлено через 1 минуту
frutty,
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <string>
 
using namespace std;
 
int main() {
    string line;
    cin >> line;
    cout << line << endl;
    return 0;
}
1
1 / 1 / 5
Регистрация: 11.05.2013
Сообщений: 33
26.02.2015, 15:52  [ТС] 6
кстати почему, если
char chislo[20];
...
scanf_s("%s",chislo);
После ввода переменная chislo становится пустым и длина равна 0?
1
Диссидент
Эксперт C
27707 / 17325 / 3810
Регистрация: 24.12.2010
Сообщений: 38,979
26.02.2015, 16:31 7
Цитата Сообщение от Гоблин-инженер Посмотреть сообщение
имеется в виду, что массив для хранения 7 символов. Или я что-то недопонимаю?
Да, для 7 символов. Но размер массива - 8.
C++
1
char line[] = ""; // размер массива = 1
0
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
26.02.2015, 16:34 8
Цитата Сообщение от frutty Посмотреть сообщение
scanf_s("%s",chislo);
После ввода переменная chislo становится пустым и длина равна 0?
Ты длину строки не указываешь, там при параметра должно быть. Либо используй простой scanf() без _s.
0
Диссидент
Эксперт C
27707 / 17325 / 3810
Регистрация: 24.12.2010
Сообщений: 38,979
26.02.2015, 18:28 9
Цитата Сообщение от Гоблин-инженер Посмотреть сообщение
int a[] = { 1, 10, 11, 56, 72 }; // Размер массива будет 5
char line[] = "abcdefg"; // Размер массива 7
Размер массива - это же ваши слова? Пост 2. К чему напрасно отпираться? Это НАПИСАНО. А что вы имели в виду, все, конечно, поняли.
// Размер массива будет 5 - а вот это верно!
0
Неэпический
18109 / 10696 / 2062
Регистрация: 27.09.2012
Сообщений: 26,933
Записей в блоге: 1
26.02.2015, 18:32 10
Цитата Сообщение от frutty Посмотреть сообщение
Как ввести строку неизвестной длины
C++
1
2
std:string str ;
std::getline ( std::cin , str ) ;
0
Неэпический
18109 / 10696 / 2062
Регистрация: 27.09.2012
Сообщений: 26,933
Записей в блоге: 1
26.02.2015, 18:41 11
Цитата Сообщение от Гоблин-инженер Посмотреть сообщение
вначале прочтите, а потом влезайте в обсуждение
Прочитал, прикиньте.
Я говорил о фактическом размере массива, о количестве ячеек, которые пригодны для нормальной работы программы.
Фактический размер - 8!!!
Будете спорить, что char line[] = "abcdefg"; предполагается для хранения 7 символов?
Предполагается хранение 8 символов. Один из них '\0'. И не важно что Вы там думаете, но этот символ так же является символом и занимает свое место в массиве. В этом массиве его так же можно заменить на любой другой, никто от этого не пострадает, разве что стандартным функциям, которые ждут '\0' в конце, на вход такое лучше не подавать.
C++
1
2
3
4
5
6
7
8
9
#include <iostream>
#include <string>
 
int main() {
    char s[] = "abcdefg" ;
    s[sizeof(s)/sizeof(*s)-1] = 'h' ;
    std::string str ( s , s + sizeof(s)/sizeof(*s) ) ;
    std::cout << str << std::endl ;
}
никто не пострадал...
1
Гоблин-инженер
26.02.2015, 18:44
  #12

Не по теме:

Croessmah, "разве что стандартным функциям на вход такое лучше не подавать" - без комментариев. А ТС, по-вашему, все стандартные функции переписал? У него в программах при таком действе будет хрень полнейшая.

0
Неэпический
18109 / 10696 / 2062
Регистрация: 27.09.2012
Сообщений: 26,933
Записей в блоге: 1
26.02.2015, 18:47 13
Цитата Сообщение от Гоблин-инженер Посмотреть сообщение
У него в программах при таком действе будет хрень полнейшая.
где Вы видите его программу? Вам тыкнули за размер массива, а не за последствия, так что не передергивайте
0
Гоблин-инженер
26.02.2015, 18:56
  #14

Не по теме:

Croessmah, "у меня есть переменная: char chislo[] = ""; //Вводимое число неизвестной длины
я пытаюсь ее ввести с клавиатуры с помощью: scanf_s("%s",chislo);" Пост ТС'а. Из него понятно, что его программа использует символьные массивы и он планирует работать со стандартными функциями ввода/вывода.
Так что я тут вижу хоть какие-то элементы программы и понимаю, что примерно он собирается использовать.

Мне предъявили претензию, что я, видите ли, объясняю все простым языком, а не добавляю с умным видом: "А вот можно еще и символ завершения строки заменить, но тогдааааааа... изволь помудохаться с возможными последствиями!". Как простым языком назвать количество ЯЧЕЕК, КОТОРЫЕ СОЗДАТЕЛИ ЯЗЫКА ОПРЕДЕЛИЛИ ПОД ИСПОЛЬЗОВАНИЕ? Размерность? Размерность - размер являются синонимами, так что претензии не в тему

0
Croessmah
26.02.2015, 19:00
  #15

Не по теме:

Цитата Сообщение от Гоблин-инженер Посмотреть сообщение
Размерность - размер являются синонимами, так что претензии не в теме
Размер массива и длина строки - вещи разные. По Вашей теории
C++
1
char s[] = "ab\0cdefg" // размер этого массива равен 2

0
Модератор
Эксперт С++
13710 / 10910 / 6476
Регистрация: 18.12.2011
Сообщений: 29,133
27.02.2015, 08:52 16
Чтобы поставить точки над i:
Имеется ДВА понятия
1. Размер массива (количество памяти выделенное под массив).
2. Длина строки (количество символов в строке).

Кстати, я никогда раньше не слышал, чтобы вместо "Длина строки" говорили "Размер строки".
0
Байт
27.02.2015, 09:17     Как ввести строку неизвестной длины
  #17

Не по теме:

Цитата Сообщение от zss Посмотреть сообщение
Чтобы поставить точки над i:
Да ставили уже! И не раз. Но тут другой случай. Вам, кстати, не удалось посмотреть удаленные посты? Впрочем, сами увидите, если повезет.:D

0
27.02.2015, 09:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.02.2015, 09:17
Помогаю со студенческими работами здесь

Ввести строку произвольной длины.Распечатать все '*' в ней с порядковыми номерами
Ввести строку произвольной длины.Распечатать все '*' в ней с порядковыми номерами

Массив символов неизвестной длины
Добрый утро/день/вечер. Дело такое: вводится строка состоящая из слов и чисел(целых), разделяют...

Считывание массива неизвестной длины
Имеется набор чисел. Про их количество ничего заранее неизвестно, кроме того, что оно кратно 10....

Чтение строки неизвестной длины
реализация на СИ как прочитать строку неизвестной длины? Чтение должно быть не посимвольным....


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

Или воспользуйтесь поиском по форуму:
17
Закрытая тема Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru