无法使用fscanf()在PHP中读取制表符分隔的值

无法使用fscanf()在PHP中读取制表符分隔的值,php,scanf,Php,Scanf,我没有太多地使用fscanf函数。我试图在hacker earth上解决这个问题,在那里,他们通过输入一些信息来测试程序。输入被当作一个文件,因为fscanf被用来读取它。以下是我试图分析的输入- 1 50 40 30 (第二行包含制表符分隔的值) 以下是我的密码- fscanf(STDIN, "%s\n", $test_cases); echo "Test ".$test_cases; fscanf(STDIN, "%d\t%d\t%d\n", $space_sep_vals); ec

我没有太多地使用fscanf函数。我试图在hacker earth上解决这个问题,在那里,他们通过输入一些信息来测试程序。输入被当作一个文件,因为fscanf被用来读取它。以下是我试图分析的输入-

1
50  40  30
(第二行包含制表符分隔的值)

以下是我的密码-

fscanf(STDIN, "%s\n", $test_cases);
echo "Test ".$test_cases;

fscanf(STDIN, "%d\t%d\t%d\n", $space_sep_vals);
echo "\n\nOutput ".$space_sep_vals;
以下是我的输出:

Test 1

Output
第二个fscanf()不解析任何内容。

如果我把它改成-

fscanf(STDIN, "%d\n", $space_sep_vals);
它解析第一个数字。输出-

Test 1

Output 50
问题在于:

fscanf(STDIN, "%d\t%d\t%d\n", $space_sep_vals);
的格式字符串包含3个转换说明符
%d
,但您只提供了一个变量来存储读取的值

由于参数不足,
fscanf()
触发一个警告(您可能看不到,因为您的PHP错误地配置为隐藏它们),并返回而不读取
$space\u sep\u vals
中的任何内容


始终传递到
fscanf()
(以及
printf()
/
scanf()中的任何其他函数)
family与格式字符串中提供的转换说明符的数量相匹配的参数的正确数量,它们将按照文档中的描述工作。

Ah,明白了。谢谢!我希望将整个解析的内容转换为单个变量。我在C:D中使用scanf()函数已经很久了