我正在尝试使用read系统调用来读取输入数据。我的程序应该这样做:
这是我的代码但不能正常工作:
#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;
}
答案 0 :(得分:0)
您的程序无法使用两个读入while循环。因为在两个读取调用中,您将从stdin读取。所以在第一次阅读时你会得到整数,但在第二次阅读时你会得到下一行(\ n)字符。
对于你的场景,你应该读取像scanf这样的缓冲区中的完整字符串,然后从字符串中获取整数,然后你想做什么。