我对这三个文件的目的感到困惑.如果我的理解是正确的,stdin程序写入其在进程中运行任务的请求stdout的文件是内核写入其输出stderr的文件,并且请求它的进程从中访问信息,并且是文件到输入所有例外情况.在打开这些文件以检查这些文件是否确实发生时,我发现似乎没有任何建议!
我想知道的是这些文件的目的究竟是什么,用非常少的技术术语绝对愚蠢地回答!
我正在尝试自己学习C,我有点困惑getchar和putchar:
#include <stdio.h>
int main(void)
{
char c;
printf("Enter characters : ");
while((c = getchar()) != EOF){
putchar(c);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
#include <stdio.h>
int main(void)
{
int c;
printf("Enter characters : ");
while((c = getchar()) != EOF){
putchar(c);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
C库函数int putchar(int c)将参数char指定的字符(unsigned char)写入stdout.
C库函数int getchar(void)从stdin获取一个字符(一个unsigned char).这相当于以stdin作为参数的getc.
这是否意味着putchar()同时接受int和char或其中一方以及getchar()我们应该使用一个int或char?
我有以下程序
#include <stdio.h>
#include <stdlib.h>
int main()
{
char ans[8];
int i;
for(i=1;i<=3;i++)
{
printf("\n What is the unit of traffic ?");
scanf("%s",ans);
fflush(stdin);
if(stricmp(ans,"Earlang")==0)
{
printf("\nAnswer is correct");
exit(1);
}
else
if(i<3)
printf("\n Try Again!\n");
}
printf("\n Nunit of traffic is Earlang:");
}
Run Code Online (Sandbox Code Playgroud)
fflush(stdin)在这个程序中有什么用?
stdin有没有EOF?例如 - 如果我使用fread/read从stdin开始读取,那么当以下循环结束时?
while ((c = read(0, buffer, BUFSIZ)) > 0) {
.
.
.
}
Run Code Online (Sandbox Code Playgroud)
如果上面的解决方案没有,那么有没有办法在stdin中添加EOF?
我的任务是创建一个测试程序C,读取标准输入的内容,然后打印它们.
但我有点怀疑:什么是标准输入?
这是我在键盘上键入的内容吗?这是我必须阅读的文件吗?
他们都?
同样的问题是standard output:它是控制台吗?一份文件?
为什么Ctrl+Z在下面的小程序中没有触发循环完成?
#include <stdio.h>
main()
{
int c;
while ((c = getchar()) != EOF)
{
//nothing
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
如果我输入:test^ZEnter,它不会跳出循环。
我发现了相关问题(此处和此处),但没有一个问题可以解释 Windows 下的 C(而不是 C++)。
注意:我在 Windows 8.1 上使用 Visual Studio 2015 PRE