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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.05.2011, 15:57   #1
yourchoice17
 
Регистрация: 07.05.2011
Сообщений: 5
По умолчанию Строки, язык С

Помогите пожалуйста, как сделать, чтобы пользователь в программу мог вводить строку любой длины, а затем сама программа вычисляла количество введенных символов? Подсказали, что нужно создать переменную типа string, т.е.:
PHP код:
int _tmain(int argc_TCHARargv[])
{
    
string A=0;
    
printf("Vvedite stroku:");
    
scanf("%s",A);
    
getch();
    return 
0;

Это не работает.
Может нужно не через переменную, а создать указатель:
char *s=NULL;
но чтоб выделить для него память с помощью malloc, нам нужно заранее знать количество символов, а мы их не знаем.
Как решить эту проблему?
yourchoice17 вне форума Ответить с цитированием
Старый 15.05.2011, 16:11   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
нужно создать переменную типа string
Разве в С (не С++) есть string?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 15.05.2011, 16:12   #3
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

yourchoice17

но чтоб выделить для него память с помощью malloc, нам нужно заранее знать количество символов, а мы их не знаем.

вводить строку по-символьно. если длинна символов превышает размер начального буфера, увеличить буфер (перераспределить память) и продолжить ввод
Rififi вне форума Ответить с цитированием
Старый 15.05.2011, 17:08   #4
yourchoice17
 
Регистрация: 07.05.2011
Сообщений: 5
По умолчанию

Написала так:
PHP код:
int _tmain(int argc_TCHARargv[])
{
    
char *a=(char*)malloc(sizeof(char)*1);
    
printf("Vvedite stroku:");
    
int i=0;
    while(
a[i]!='\0')
    {    
        
a=realloc(a,sizeof(char)*i);
        
scanf("%s",a[i]);
        
i++;
    }    
    
getch();
    return 
0;

Не понимаю, я вообще в корне неправильно делаю или тут какя-то ошибка?
yourchoice17 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Строки ( язык Pelles C ) Kotik Wasil Помощь студентам 1 13.02.2011 10:08
Строки Векторные данные (язык Pelles C) Kotik Wasil Помощь студентам 0 12.12.2010 20:53
строки.русский язык. parovoz121 Общие вопросы C/C++ 1 10.06.2010 12:16
язык С матрицы и строки AlinAA Фриланс 1 16.05.2009 00:36