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