Tag: 标准输入

输入使用不起作用,但使用scanf

#include void main(){ char str[100]; char letter; letter=getchar(); printf(“%c”,letter); gets(str); //Rest of code } 执行时,代码跳过gets(str)行。 但是当我用scanf替换gets时,它可以工作。 任何具体的原因,为什么不起作用? 我正在使用gcc 4.7.2。

使用read(..)从stdin读取并计算缓冲区的大小

我想知道是否有人可以告诉我,当使用read(…)从stdin read(…)输入时是否有动态分配缓冲区的方法例如: n = read(0, buffer, sizeof ?); 如何确保从stdin (此处为0)读取的字节数与buffer的相同?

在c中读取()stdin?

我有一个涉及read()命令的快速小问题。 我在C中真的很生气,不幸的是,我现在的作业让我用C语言编程。我们需要使用read()而不是fgets等来读取stdin。 所以我有一个简单的while循环: int n, i; char buffer[257], *input; while((n=read(fileno(stdin), buffer, 256)) > 0) { buffer[n] =’\0′; if(buffer[n] = ‘\n’) break; write(input, buffer, strlen(buffer)); } 因此我不确定如何在按下输入(行尾)时使这个循环停止,这就是为什么我有中断代码,虽然我不知道这是否正确完成。 我想要完成的整个目标是将stdin的输入放入指针’input’ (我真的很难理解指针,所以请耐心:)) 我的问题是当我按Enter键时出现分段错误。 我希望我可以使用fgets,因为这一切都可以通过一个简单的解决 input = fgets(buffer, 256, stdin); 做作业:(不管怎样,如果你们中的任何一个人能指出我正确的方向,我会非常感激。谢谢!

C – 键入字符时从stdin读取

如何在输入字符时填充80个字符的缓冲区,或者直到按下回车键或缓冲区已满,以先发生者为准。 我已经研究了很多不同的方法,但必须按下输入然后输入字符*在80处被切断。 谢谢。

如何将一个子进程中的stdout链接到C中另一个子进程中的stdin?

我一直在乱搞C试图弄清楚如何做到这一点。 假设我有我的主程序,即父进程。 父级创建了三个子进程,每个进程最终将运行程序(但现在这并不重要)。 我想做的就是让第二个孩子的stdin接收第一个孩子的stdout。 然后第三个孩子的标准输出将接收第二个孩子的标准输出。 父进程的stdin / stdout根本没有搞乱。 到目前为止,我得到的是 pipe(procpipe); parentPid = getpid(); for(i = 0; i < 3; i++) { if(getpid() == parentPid) { child[i] = fork(); if(child[i] == 0) { mynumber = i+1; } } } 但是从那里开始,我有点担心如何使用dup2来正确分配我的管道,以及在我的代码的哪一部分插入它。 谷歌和这个网站上有很多关于如何从父母到孩子的管道的例子,但是我还没有看到一个会告诉我如何将孩子的标准输出连接到另一个孩子的标准输入的确切信息。 编辑:忘记提及:假设我的所有变量都已正确初始化。 int’mynumber’是这样的子进程在创建时知道它是哪个数字,所以我可以通过它给出指令 if(mynumber == whatever)