printf ("Enter valid characters please \n");
)
下面是我的代码:
int i = 0 ;
int L ;
printf ("Please enter the lenght of report \n");
scanf ("%d" , &L);
if ( L>=1 && L<=500 )
{
printf ("Please enter the Reoprt \n");
string P = get_string ();
if (P[i] !='H' && P[i] != 'T' && P[i] != '.')
{
printf ("Enter valid characters please \n");
}
else
{
printf ("GOOD3 \n");
}
}
else
{
printf ("Please enter valid Length \n");
}
答案 0 :(得分:0)
您遇到此问题的原因是scanf("%d", &L)
将从输入中获取一个或多个数字,而不是。因此,它会在输入您的号码后留下您输入的换行符。
当你致电get_string()
时(我假设这与CS50库中的GetString()
相同?),它看到的第一个字符是这个剩余的换行符,所以你得到的只是back是一个空字符串。
你可以轻松解决这个问题。只需将scanf ("%d" , &L);
替换为L = GetInt();
。
或者,将scanf ("%d" , &L);
替换为scanf ("%d%c" , &L, &newline);
,将newline
声明为char
函数顶部的main()
变量。这将消耗数字后面的换行符,以便GetString()
不会将其视为空字符串。有关scanf()
如何工作的更多详细信息,请在命令行键入man scanf
。