我必須總結兩個數字,而第一個數字不等於-1,並且數字只有一個數字。 我必須使用read()和write()。系統調用SO初學者編程
#include <unistd.h>
#include <errno.h>
int main()
{ int Somma;
int One;
int Two;
do
{ write(1, "\nFirst Number: ", 15);
if(read(0, &One, sizeof(int)) == -1)
perror("Error First Read");
if(One != -1)
{ write(1, "Second Number: ", 15);
if(read(0, &Two, sizeof(int)) == -1)
perror("Error Second Read");
Somma = One + Two;
Somma -= 48;
write(1, "Sum: ", 5);
if(write(1, &Somma, sizeof(int)) == -1)
perror("Error Write");
}
}while(One != -1);
return 0;
}
現在,我有一些問題。首先,當One等於-1時,程序繼續進入if語句... 第二個是最後一個write(),打印出一個數字和一個奇怪的字符(用0014代碼的一個正方形...) )。 有什麼問題?
謝謝你提前
是否有任何理由,你不使用像printf(3)和scanf(3)glibc函數?您正在使用'read(2)'錯誤,讀取4個字節,等於4個字符。 'read(2)'讀取二進制數據,而不是實際的字符。 – holgac 2015-04-03 15:33:25
教授說我們必須在unistd.h庫中使用read()和write()... – 2015-04-03 15:35:26
噢好的。除了下面的答案之外,我想說,因爲你正在使用linux,所以請稍微不要在變量名中使用第一個字母。另一件事是,在'read(2)'和'write(2)'調用中使用'STDIN_FILENO'而不是0和'STDOUT_FILENO'而不是1。它會更容易閱讀。 – holgac 2015-04-03 15:37:56