gpt4 book ai didi

在 if 语句之前运行的 c 系统调用

转载 作者:行者123 更新时间:2023-11-30 21:21:58 26 4
gpt4 key购买 nike

所以这是我的问题,给定这段代码,在请输入您的名字之前添加的任何内容都会被忽略,并且自动运行的第一条指令(甚至没有首先检查 x 是否为 5,输入您的名字,然后它之前的指令都会运行。因此,如果程序的第一行是 printf,它将被忽略,并且立即会要求输入,然后打印 printf 语句,即使它是第一行。请帮忙

int main(int argc, char** argv)
{
char val[70];
int x=3;
if(x>5)
{
if(write(1, "Please input your name", 22)!=22)
{
return -1;
}

if(read(0, val, 36) < 0)
{}

if(write(1, val, 36)!=36)
{}
}
}

最佳答案

printf 适用于 stdout,它是一个 FILE*。 read() 和 write() 调用直接作用于文件描述符。

FILE* 通常是缓冲的,这意味着 printf 的内容驻留在程序的缓冲区中,直到被刷新。而 write() 则将数据直接发送到操作系统,而无需在应用程序中进行任何缓冲。

因此刷新 FILE* 缓冲区以使输出出现:

int main(int argc, char** argv)
{
char val[70];
int x=3;
printf("Hello");
fflush(stdout);

如果 stdout 是您的终端,那么当您写入换行符时,它通常会自动刷新,例如printf("你好\n");

关于在 if 语句之前运行的 c 系统调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14784231/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com