0
我必須從用戶那裏獲得輸入,將其放入管道中(在父進程中),然後我必須處理子進程中的字符串。所有大寫字母都必須小寫,所有小寫字母必須大寫。我的問題是與管道的輸出。我的代碼只會改變字符串中第一個字符的字母大小寫,我不知道爲什麼。孩子管道正在閱讀所有的字符(至少它看起來是)。我希望有人能告訴我爲什麼這不會處理每個角色。管道讀取處理
while (read(pfd[0], &buf, strlen(cmd)) > 0){
if(buf >= 'a' && buf <= 'z'){
buf = toupper(buf);
}
else{
buf = tolower(buf);
}
}
write(STDOUT_FILENO, &buf, strlen(cmd));
是有道理的,但BUF被定義爲char BUF;它不是一個數組或指針。 –
也,我只是改變了buf的定義是一個數組,它完美的作品。希望我沒有被告知它必須是單個字符而不是數組! –
那麼如果你真的需要讀入一個字節,那麼你原來應該工作。您只需將其更改爲每次讀取一個字節而不是strlen(cmd)字節。但說實話,這是有點明智的效率。 – Duck