2
Scanf
应返回输入的字符数。但奇怪地只返回1。scanf返回值不如预期
scanf ("%d",&num_test_cases);
for (i=0;i<num_test_cases;i++)
{
level=scanf ("%s",ch);
printf ("\n %s\n",ch);
printf ("%lld\n",level);
}
样品输入:
4
lrl
rll
r
lllr
输出:
lrl
1
rll
1
r
1
lllr
1
我猜你在等待scanf返回输入的字符数,这不是scanf的工作方式。您要求scanf扫描一个项目(%s),并返回它成功扫描一个项目。 – 2014-09-05 14:21:13
返回1是好的。这意味着某些内容存储在'ch'中。 '0'表示没有读(不太可能)。 'EOF'意思是'stdin' isat文件结束(关闭)。 – chux 2014-09-05 14:40:36
C11dr§7.21.6.216“如果在第一次转换(如果有)完成之前发生输入故障,则fscanf函数返回宏EOF的值;否则,该函数将返回分配的输入项的数量,如果发生早期的匹配失败,那么可以提供甚至为零,甚至为零。“ – chux 2014-09-05 14:42:19