从stdin获得奇怪的输出读数

时间:2016-06-02 21:49:59

标签: c linux unix

所以我要做的是重复键盘输入到标准输出。它必须使用读/写

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#define BUFFSIZE 1024
int  main() {
    char buffer[BUFFSIZE];
    while (1)
       if (read(0, buffer,  sizeof(buffer))) 
             write(1, buffer, sizeof(buffer)); 
         return 0;
}

如果我输入“hello”,它会创建一个带有一堆奇怪符号的新行。字母和另一个新行,它会说“你好”

1 个答案:

答案 0 :(得分:4)

你应该保存read()的返回值,并只写出read()真正读过的数量。

你的代码也太混乱了,并没有多大意义,你的while循环应该有一个条件,并且在这样的程序中有一个非常的,

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

#define BUFFSIZE 1024
int  
main(void) 
{
    char buffer[BUFFSIZE];
    ssize_t length;
    while ((length = read(STDIN_FILENO, buffer,  sizeof(buffer))) > 0)
        write(STDOUT_FILENO, buffer, length); 
    return 0;
}