2014-03-06 138 views
2
while( rd = read(fd1, buf, 512) != 0) 
{ 
    len += rd; 
    if(readed < 0) 
    perror("read: "); 
} 

手冊頁說,那讀()返回讀取的字節數,但在我的情況下,該代碼返回塊數(取決於第三個參數),或者迭代次數。例如,我有36個符號的文件,並且此代碼返回1,當所有符號正常讀取時,如果我將512更改爲4,則返回9,依此類推。請糾正我,這個代碼返回與512塊大小的塊的read()返回「不正確」的值

+0

是的,謝謝大家。我忘記了,從右到左的操作處理和!=比= – Ivan

回答

9
rd = read(fd1, buf, 512) != 0 

讀取的字節數是指

rd = (read(fd1, buf, 512) != 0) 

!=結果總是要麼01

你可能是指

while ((rd = read(fd1, buf, 512)) != 0) 
1

不正確的使用括號, PL。像下面一樣更改您的代碼。希望它會給你正確的結果。

while( (rd = read(fd1, buf, 512)) != 0) 
{ 
    len += rd; 
    if(rd < 0) 
    perror("read: "); 
} 
1

您是否嘗試在while循環條件之外設置第三個值? 沒有更多的括號,我認爲設置和測試while條件中的值部分是不正確的。

+2

有更高的優先級。這更多的是評論而不是答案...嘗試改進它! – fedorqui