На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Qraizer, Hsilgos
  
> gets() не дружит со scanf()?
    #include <stdio.h>
    #include <conio.h>
    void main(){
    char a[45];
    int q;
    printf("q: ");
    scanf("%d",&q);
    printf("a: ");
    gets(a);
    printf("***\n%d\n%s",q,a);
    getch();
    }

    Функция gets() в этом случае (при использовании после scanf()) попросту не вызывается.
    Чем это может быть вызвано и, самое интересное, как с этим бороться?
    Просто заменить gets() на scanf() в моём случае нельзя, так как scanf() читает строки только до первого пробела
      Цитата
      Zabiyaka, 16.02.04, 02:44
      Просто заменить gets() на scanf() в моём случае нельзя, так как scanf() читает строки только до первого пробела
      Можно, причем очень просто:
      ExpandedWrap disabled
        char buffer[256];
        printf("Введите строку: ");
        scanf("%255[^\n\r]",buffer);
        Попробуй использовать fflush:

        ExpandedWrap disabled
          scanf("%d",&q);
          fflush(stdin);
          Спасибо, проверим :)
          Кстати, вчера ночью, когда это было срочно нужно, спасло вульгарное удвоение команды gets()...

          З.Ы.
          Попробовал метод Trainer-а - будете смеяться, но с ним такая же ботва, как и с fgets. А вот fflush(stdin) помогает.
          Сообщение отредактировано: Zabiyaka -
            Функция (f)scanf вообще очень опасная, и ее можно использовать разве что в проектах для личного и недолгого использования.

            Есть очень надежная и ИМХО оптимальная связка для работы с текстовым вводом: fgets+sscanf.
            Этим способом можно гарантировать стабильность программы при любых входных данных (в отличие даже от С++ функций).
            1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
            0 пользователей:


            Рейтинг@Mail.ru
            [ Script execution time: 0,0243 ]   [ 15 queries used ]   [ Generated: 15.05.24, 07:34 GMT ]