【发布时间】:2014-03-29 02:26:44
【问题描述】:
您好,我是套接字编程的新手,我编写了一个简单的客户端/服务器系统来通过套接字发送数据。我已经让它工作了,这样我就可以向服务器发送一个字符串并接收回复。
现在我试图让服务器识别从客户端发送的命令,但是我从客户端发送的所有内容最后都有一个换行符。我知道我可以从服务器端处理这个问题,但是有没有办法从客户端删除换行符?
下面是编写代码:
printf("Please enter the message: ");
bzero(buffer,256);
fgets(buffer,255,stdin);
n = write(sockfd,buffer,strlen(buffer));
【问题讨论】:
-
在写入缓冲区之前用 0 设置缓冲区。
-
@CantChooseUsernames 他为什么会出于兴趣这样做?
-
它将每个字节设置为 0,因此 OP 不必这样做
buffer[strlen(buffer) - 1] = '\0';我猜后者比使用 memset 更好。如果 OP 正在处理位图或大型缓冲区和结构,memset 将是可行的方法。 -
@CantChooseUsernames 缓冲区[strlen(buffer) - 1] = '\0';只是清除 fgets end 的输出缓冲区的新行并将其替换为 null (强制字符串结束)。虽然有时使用归零缓冲区确实是一个好主意,但这里并不严格需要。但是,是的,使用位图或不是 ascii 文本的东西是正确的。
-
注意,
fgets需要缓冲区大小,所以如果buffer是一个数组,则将其设为256,或者甚至更好,fgets(buffer, sizeof buffer, stdin)。