Ваша проблема в том, что char Name;
может хранить только один символ.Ваш код позволяет пользователю вводить несколько символов, которые сохраняются в Name
, вызывая ошибку памяти.
Измените char Name;
на что-то вроде char Name[50]
, чтобы вы могли сохранить до 49 символовплюс null
байт.
Также вы должны правильно использовать scanf_s()
, чтобы избежать ошибки, если буфер (массив символов) окажется слишком маленьким.
Обратите внимание, вывсегда следует проверять возврат из scanf_s()
, чтобы вы знали, если пользователь ввел правильные данные или нет.
Этот код работает правильно в Visual Studio:
#include "stdafx.h"
#include <string.h>
#include <stdlib.h>
int main()
{
int Age;
char Name[50];
printf("Type your age: ");
if(scanf_s("%d", &Age))
{
printf("Your age is %d\n", Age);
printf("Type your Name: ");
if (scanf_s("%s", Name, (unsigned)_countof(Name)))
{
printf("Your name is %s\n", Name);
}
else
{
printf("Name:: Invalid Input\n");
}
}
else
{
printf("Age:: Invalid Input\n");
}
return 0;
}