gpt4 book ai didi

c - 如何使用 read 系统调用读取数据输入

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

我正在尝试使用读取系统调用读取输入数据。我的程序应该执行以下操作:

  1. 通过 read 系统调用来输入两个整数数据
  2. 对这些值求和
  3. 通过 write 系统调用打印输出结果
  4. 当第一个输入数据为-1时结束程序

这是我的代码,但不能正常工作:

#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>

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

char buff[2];
char buff1[2];
char buff_w[2];

int sum = 0, i, n = 0, val = -1, val1 = -1, n1 = 0;

for(i = 0; i < 2; i++) {
buff[i] = 0;
buff1[i] = 0;
buff_w[i] = 0;
}

while((n = read(0, &buff, 1)) > 0) {
val = atoi(buff);
if(val == -1)
break;
if((n1 = read(0, &buff1, 1)) >0)
val1 = atoi(buff1);
if(val >= 0 && val1 >= 0) {
sum = val + val1;
sprintf(buff_w, "%d", sum);
write(1, &buff_w, 1);
}
}

return 0;
}

最佳答案

您的程序将无法在 while 循环中进行两次读操作。因为在两个 read 调用中,您都将从 stdin 读取。因此,在第一次读取时,您将获得整数,但在第二次读取时,您将获得下一行(\n)字符。

对于您的场景,您应该像 scanf 一样读取缓冲区中的完整字符串,然后从字符串中获取整数,然后执行您想要执行的操作。

关于c - 如何使用 read 系统调用读取数据输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40842429/

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