簡體   English   中英

read()返回“不正確”的值

[英]read() return “incorrect” value

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

MAN頁面說,read()返回讀取字節數,但在我的情況下,此代碼返回塊數(取決於第三個參數)或迭代次數。 例如,我有36個符號的文件,當所有符號通常讀取時,此代碼返回1,如果我將512更改為4,則返回9,依此類推。 請更正我和此代碼以返回使用512個大小的塊讀取的字節數

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

手段

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

!=的結果總是01

你可能意味着

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

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

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

您是否嘗試將此值設置為while循環條件之外? 如果沒有更多括號,我認為在while條件下設置和測試值部分是不正確的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM