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