您好我是套接字编程的新手,我已经编写了一个简单的客户端/服务器系统来通过套接字发送数据。我已经让它工作了,所以我可以发送一个字符串到服务器并收到回复。
现在我试图让服务器识别从客户端发送的命令,但是我从客户端发送的所有内容都有一个换行符。我知道我可以从服务器端处理这个问题,但有没有办法从客户端删除换行符?
以下是编写代码的代码:
printf("Please enter the message: ");
bzero(buffer,256);
fgets(buffer,255,stdin);
n = write(sockfd,buffer,strlen(buffer));
答案 0 :(得分:8)
确实,问题不在于套接字是在添加新行(套接字从不处理或更改数据)而是调用fgets只是捕获您键入的换行符。您可以使用这个方便的一个衬垫将其移除:
buffer[strlen(buffer) - 1] = '\0';
必须介于fgets和write之间。
为了更安全一点,最好使用
if('\n' == buffer[strlen(buffer) - 1])
buffer[strlen(buffer) - 1] = '\0';
答案 1 :(得分:1)
对于您的问题,一个很好的解决方案是buffer[strcspn(buffer,'\n')] = 0
。
您可以在此处查看有关strcspn的更多详细信息https://www.tutorialspoint.com/c_standard_library/c_function_strcspn.htm
祝你好运!