Я довольно новичок в C, и у меня возникла проблема с вводом данных в программу.Вход в C. Scanf до получения. Проблема
Мой код:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void) {
int a;
char b[20];
printf("Input your ID: ");
scanf("%d", &a);
printf("Input your name: ");
gets(b);
printf("---------");
printf("Name: %s", b);
system("pause");
return 0;
}
Это позволяет для ввода ID, но он просто пропускает остальную часть входных данных. Если я изменю заказ следующим образом:
printf("Input your name: ");
gets(b);
printf("Input your ID: ");
scanf("%d", &a);
Будет работать. Хотя, я НЕ МОГУ поменять порядок, и мне это нужно как есть. Кто-нибудь может мне помочь ? Возможно, мне нужно использовать некоторые другие функции. Благодаря!
получает (3): «получает() функция не может быть надежно использован Из-за его отсутствия проверки границ, и невозможность для вызывающей программы в. надежно определяют длину следующей входящей линии, использование этой функции позволяет злоумышленникам произвольно изменять функциональность запущенной программы - - через атаку переполнения буфера. Настоятельно предлагается , что функция fgets() будет использоваться в все случаи. FSA.) « Не используйте его. –
Короче: если вы используете 'get', летающие бешеные атакующие оцелоты вырвут ваши глаза. Так не надо. –
'scanf' is ** evil ** - http://c-faq.com/stdio/scanfprobs.html – jschmier