在没有printf的情况下打印到终端?

时间:2020-08-28 07:22:03

标签: c linux unix output

对于我的uni作业,我要编写一个C程序,将Linux / Unix中文件的内容打印到终端中。但是,我们不允许使用<stdio.h>库,因此printf之类的功能不可用。

有什么方法可以将内容打印到终端中?我在进行搜索,但是找不到直接的答案,因为大多数人只是使用printf

1 个答案:

答案 0 :(得分:6)

您可以使用write

https://linux.die.net/man/2/write

示例:

#include <unistd.h>
#include <string.h>

int main(void)
{
    char my_string[] = "Hello, World!\n";
    write(STDOUT_FILENO, my_string, strlen(my_string));
}

对于我的uni作业,我要编写一个C程序,将Linux / Unix 中的文件内容打印到终端中。

您不能真正“写入终端”。您可以做的是写到stdout和stderr,然后终端将在那之后处理它。

编辑:

好吧,正如KamilCuk在评论中提到的那样,您可以写到终端/dev/tty。这是一个示例:

#include <fcntl.h>  // open
#include <unistd.h> // write
#include <string.h> // strlen
#include <stdlib.h> // EXIT_FAILURE

int main(void)
{
    int fd = open("/dev/tty", O_WRONLY);

    if(fd == -1) {
        char error_msg[] = "Error opening tty";
        write(STDERR_FILENO, error_msg, strlen(error_msg));
        exit(EXIT_FAILURE);
    }

    char my_string[] = "Hello, World!\n";
    write(fd, my_string, strlen(my_string));
}