Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 端接标准输入_C_Scanf - Fatal编程技术网

C 端接标准输入

C 端接标准输入,c,scanf,C,Scanf,这并没有给我任何输出。关于仅用于从ls-l命令读取输出的最简单修改如下: ls -l | my_program 输入是什么?您应该通过在类Unix系统上键入Control-D或在Windows系统上键入Control-Z来指示EOF。%s将跳过前导空格(包括换行符),等待非空白字符。只有EOF才能让它停止。如果要执行基于行的输入并在空行或全空行上停止,请使用fgets()读取该行,并使用sscanf()解析该行。注意,在Unix上,Control-Z挂起而不是终止进程。请(重新)阅读该页,并注

这并没有给我任何输出。

关于仅用于从
ls-l
命令读取输出的最简单修改如下:

ls -l | my_program

输入是什么?您应该通过在类Unix系统上键入Control-D或在Windows系统上键入Control-Z来指示EOF。
%s
将跳过前导空格(包括换行符),等待非空白字符。只有EOF才能让它停止。如果要执行基于行的输入并在空行或全空行上停止,请使用
fgets()
读取该行,并使用
sscanf()
解析该行。注意,在Unix上,Control-Z挂起而不是终止进程。请(重新)阅读该页,并注意创建MCVE()的指导原则。要发现您正在运行
ls-l |/您的_程序
,应该不那么难;这应该是最初问题的一部分。一旦获得了重要信息,问题就可以立即得到解决。预先声明诸如“必须使用
scanf()
且不能使用其他输入函数”之类的限制非常重要。人们会建议最好的方法,除非他们被告知你没有任何选择。下次请记住。谢谢。由于OP使用了
%*d
%*s
,因此不需要向他们解释
*
抑制赋值,并且转换规范不计入
scanf()的返回值中。答案确实提到了扫描集,并再次使用了赋值抑制,并且有一个指向POSIX文档的链接,用于
scanf()
,该文档详细介绍了这些要点。明白了……很好。是的,OP使用了它-希望OP知道。我还看到OP在我编辑问题以添加
ls-l |程序
信息之前不久编辑了格式字符串。最初,它在
%d
之后没有所有的尾随字段。没什么大不了的。使用
%*[^\n]
扫描集可以全面处理行的其余部分,即使文件名中有空格,但问题中的代码无法很好地处理这些空格。
ls -l | my_program
#include <stdio.h>

int main(void)
{
    char str[20];
    int number;
    if (scanf("%*[^\n]") != 0)
        return 1;
    while (2 == scanf("%s %*d %*s %*s %d %*[^\n]", str, &number))
        printf("%s  %d\n", str, number);
    return 0;
}
$ ls -l
total 152
-rw-r--r--    1 jleffler  staff  22072 Dec 30 09:19 LICENSE.md
-rw-r--r--    1 jleffler  staff   2694 Dec 30 09:19 README.md
dr-xr-xr-x    4 jleffler  staff    128 Aug 14  2016 Safe
drwxr-xr-x   84 jleffler  staff   2688 Jan 12 00:58 Untracked
drwxr-xr-x   26 jleffler  staff    832 Dec 25 22:39 bin
-rw-r--r--    1 jleffler  staff   1875 Jan 19 00:08 crseq71.sql
drwxr-xr-x   14 jleffler  staff    448 Dec 30 09:19 doc
drwxr-xr-x   10 jleffler  staff    320 Jan 12 01:13 etc
-rw-r--r--    1 jleffler  staff    173 Mar  3  2017 get.jl.activity
drwxr-xr-x   21 jleffler  staff    672 Jan  7 23:02 inc
drwxr-xr-x    5 jleffler  staff    160 May 28  2017 lib
-rw-r--r--    1 jleffler  staff    390 Jun 21  2017 makefile
drwxr-xr-x    4 jleffler  staff    128 Jan 12 01:13 packages
-rw-r--r--    1 jleffler  staff    218 Oct 15 10:18 pending.20171015.101828
-rwxr-xr-x    1 jleffler  staff   8704 Jan 19 21:39 rl43
-rw-r--r--    1 jleffler  staff    248 Jan 19 21:39 rl43.c
drwxr-xr-x    3 jleffler  staff     96 Jan 19 21:21 rl43.dSYM
-rw-r--r--    1 jleffler  staff   2247 Jan  6 22:44 sll43.c
-rw-r--r--    1 jleffler  staff    126 Oct 24 12:52 so-4689-5145.info
drwxr-xr-x  227 jleffler  staff   7264 Jan 19 11:34 src
-rw-r--r--    1 jleffler  staff     92 Jan 19 21:20 testfile.txt
-rw-r--r--    1 jleffler  staff    645 Jan 18 23:37 union71.c
$ ls -l | ./rl43
-rw-r--r--  22072
-rw-r--r--  2694
dr-xr-xr-x  128
drwxr-xr-x  2688
drwxr-xr-x  832
-rw-r--r--  1875
drwxr-xr-x  448
drwxr-xr-x  320
-rw-r--r--  173
drwxr-xr-x  672
drwxr-xr-x  160
-rw-r--r--  390
drwxr-xr-x  128
-rw-r--r--  218
-rwxr-xr-x  8704
-rw-r--r--  248
drwxr-xr-x  96
-rw-r--r--  2247
-rw-r--r--  126
drwxr-xr-x  7264
-rw-r--r--  92
-rw-r--r--  645
$