C语言 是否有用于发送的fprintf文件?

46qrfjad  于 2023-02-03  发布在  其他
关注(0)|答案(3)|浏览(105)

这很可能是个新手问题,但我正在寻找一个printf风格的函数,用于TCP套接字上的send。这是一个简单的聊天服务器,特别是Beej套接字指南中的一个修改版本。我准备编写自己的函数,但在此之前,我想确保我不是在重新发明轮子。
我在寻找C语言的原生代码,而不是一个库或什么的。我做这件事是出于一种智力上的追求,使用一个现成的库不仅不会教会我,而且会把事情搞砸,除非我把它做对并理解为什么。
提前感谢任何回答的人!
编辑:我目前正在使用:

if(current_user->fs_id == sending_user->fs_id) {
    snprintf(server->current_buffer, buffer_size, "You said: %s", message);
} else {
    snprintf(server->current_buffer, buffer_size, "%s said: %s", sending_user->name, message);
}

if(send(current_user->fs_id, server->current_buffer, buffer_size, 0) == -1) {
    perror("Sending data");
}

我知道这不是最好的方法,这是我现在正在解决的问题的一部分。

8wtpewkr

8wtpewkr1#

使用fdopen创建与套接字对应的FILE *,然后使用fprintf写入套接字。

iyfjxgzm

iyfjxgzm2#

我假设您会将snprintf(比sprintf更安全)用于缓冲区,而send ...
当然,你可以用一个很小的自耦变压器函数来封装它。

ejk8hzay

ejk8hzay3#

POSIX标准定义了:

int dprintf(int fildes, const char *restrict format, ...);

dprintf()函数应等同于fprintf()函数,不同之处在于dprintf()应将输出写入与fildes参数指定的文件描述符关联的文件,而不是将输出置于流中。

返回值:

成功完成后,dprintf()函数应返回传输的字节数。

相关问题