gpt4 book ai didi

c - 程序不写在标准输出上而是卡住了

转载 作者:太空宇宙 更新时间:2023-11-04 07:01:48 26 4
gpt4 key购买 nike

我正在编写这个软件,它应该打开一个文件,该文件必须作为参数传递,并使用 open 和 write 系统调用将文件的内容写入标准输出。 (有点像cat命令)

问题是,一旦我将程序运行为

./a.out /example/pattern/file

它在标准输出上写入文件的模式,然后卡住,没有写入任何内容或终止,甚至允许我在终端上写入。

我试过使用 ddd 调试器,但没能找到问题所在。

包含所有必要的 header 。

int main(int argc,char * argv[]){

printf("%s\n", argv[1]);
int fd, lung;
char buf[10];
if(fd = open(argv[1], O_RDONLY)==-1){
perror("argv[1], in apertura");
exit(EXIT_FAILURE);
}
while(lung = read(fd,buf,10)>0){
if( (write(1, buf, lung))==-1) perror("error");
}
if (lung==-1) {perror("error");exit(EXIT_FAILURE);}
fflush(NULL);
close(fd);
return 0;
}

最佳答案

这不是很可疑吗?

if(fd = open(argv[1], O_RDONLY)==-1) {

根据 operator precedence , == 将在 = 之前执行。

然后:

while(lung = read(fd,buf,10)>0){

同样会受到在 = 之前执行的 > 的影响。

提示:如有疑问,请使用括号! ;)

关于c - 程序不写在标准输出上而是卡住了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37170126/

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