Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > ввод фиксированного кол-ва символов со scanf


Автор: _RIKOSHET_ 31.7.2007, 19:04
У меня что-то не получается ввод фиксированного кол-ва символов в строку (в моем случае до 8)
Как правильно задать такой параметр для scanf
Код

#define MaxLenStr 8

void main()
{
    char str[MaxLenStr+1];

    printf("Введите сумму чека (не более %i цифр) \n",MaxLenStr);
    scanf("%.*s",MaxLenStr,str); //вот тут я неправильно делаю

    printf("%s\n",str);
}

Автор: Kuvaldis 31.7.2007, 19:21
_RIKOSHET_, 
Плохая идея - вводить строки через scanf. Делай это через функцию fgets(), у которой одним из параметров идет максимальное кол-во вводимых символов

Автор: _RIKOSHET_ 31.7.2007, 19:39
Kuvaldis, 
1)почему плохая идея?
2)а со scanf так как мне надо нельзя вообще сделать?

Автор: Kuvaldis 31.7.2007, 20:05
_RIKOSHET_, 
Цитата

1)почему плохая идея?

1. scanf - функция универсальная, а значит, медленная
2. scanf пробелы и т.д. считает разделителем строки. Если нужно ввести строку "a с " то scanf не пройдет (как минимум, 2 раза вызывать)
3. этих недостатков лишена fgets()

 
Цитата

2)а со scanf так как мне надо нельзя вообще сделать?

Нешта у меня не получается. smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)