我刚开始使用C而且我在编译时遇到了一些麻烦。 似乎编译器经常遇到char问题。 请注意我必须在%c之前放置空格。 现在经过网上研究了一下后我才知道添加,1& flag几乎解决了这个问题,但我宁愿完全解决这个问题,因为它应该像这样工作。 我正在使用Visual Studio 2013 btw。
#include <stdio.h>
void main()
{
int num;
char flag;
while (1)
{
printf("Please enter your no.:");
scanf_s("%d", &num);
if (num > -1)
{
if (num < 10)
{
printf("Your number is 1 digit.\n");
}
else if (num < 100)
{
printf("Your number is 2 digits.\n");
}
else if (num < 1000)
{
printf("Your number is 3 digits.\n");
}
else if (num > 999)
{
printf("Your number has a lot of digits.\n");
}
}
else
{
printf("Please input a correct value.\n");
}
printf("Would you like to countinue? y/n \n");
scanf_s(" %c", &flag)
// problem
if (flag == 'n')
{
exit(0);
}
}
}
答案 0 :(得分:0)
您的代码无效,您必须使用scanf_s()
指定缓冲区大小。 See the documentation:
与
scanf
和wscanf
不同,scanf_s
和wscanf_s
要求为c,C,s,S或[类型]的所有输入参数指定缓冲区大小。字符的缓冲区大小作为附加参数传递,紧跟在指向缓冲区或变量的指针之后。
这就是为什么它可以添加拨打电话scanf_s(" %c", &flag, 1);
。