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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.06.2018, 09:48   #1
Tpai
 
Регистрация: 09.06.2018
Сообщений: 9
По умолчанию не срабатывает функция gets_s

Во время второго прохода по циклу не срабатывает первая gets_s.
Код:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct country {
    char name[16];
    char stolica[16];
    char jazik[16];
    double ludimln;
    double ploshadmln;
    struct country * next;
};
 
int main()
{
    struct country * rex;
    struct country * beg = NULL;
    struct country * end = NULL;
 
    do
    {
        rex = (struct country *)malloc(sizeof(struct country));
        printf("\nname: ");
        gets_s(rex->name);
        printf("\nstolica: ");
        gets_s(rex->stolica);
        printf("\njazik: ");
        gets_s(rex->jazik);
        printf("\nludi, mln: ");
        scanf_s("%lf", &rex->ludimln);
        if (rex->ludimln == -1) {
            free(rex);
            break;
        }
        printf("\nploshad, mln: ");
        scanf_s("%lf", &rex->ploshadmln);
        
        if (beg == NULL && end == NULL)
            beg = rex;
        else
            end->next = rex;
        end = rex;
        end->next = NULL;
    } while (1);
    rex = beg;
    while (rex != NULL) {
        printf("\nname %s stolica %s yazik %s ludi, mln %lf ploshad, mln %lf", rex->name, rex->stolica, rex->jazik, rex->ludimln, rex->ploshadmln);
        rex = rex->next;
    }
    
    return 0;
}
_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 09.06.2018 в 10:55.
Tpai вне форума Ответить с цитированием
Старый 09.06.2018, 10:13   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Он срабатывает. Просто вы забываете, что после пользовательского ввода в буфере вводе остался перевод строки. Вот его вы и считываете как пустую строку. Добавьте в сканф его считывание и игнорирование или просто пропускайте.
p51x вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Функция Яваскрипта (ДжейКвери) не срабатывает Bulat Ibrahim JavaScript, Ajax 0 21.08.2016 14:15
Функция gets_s marenko.lilia Общие вопросы C/C++ 3 30.05.2016 21:01
Не срабатывает функция FindWindowEx, в чем причина? adkomissarov Общие вопросы Delphi 30 25.01.2015 13:00
Не срабатывает функция. Aries Общие вопросы C/C++ 1 30.05.2012 19:37
Не срабатывает функция! Nikita090 JavaScript, Ajax 3 15.01.2012 01:12