我是 C 语言新手,想知道如何做这样的事情:
我有一个字符串通过套接字传入(可能会有所不同)
"GET OK 1045 \r\nTHE RED RIDING HOOD"
现在我可能会得到它的大块,而不是完全像
"GET OK 10"
然后
"45 \r\nTHE RED RIDING HOOD"
当它找到 \r\n
并将其之前的内容存储在一个变量中并将其之后的内容存储在另一个变量中时,最好的分割方式是什么。
我尝试过 strtok()
但它变得很困惑并且出现错误
我尝试了sscanf()
,但由于我可能会得到 block ,所以我永远无法让它将其正确格式化到我的变量中。我确信有一种简单的方法可以在 while 循环中做到这一点,但 split 才是让我困扰的原因。
while((items_read = read(sock, stories_buffer, BUF_SIZE)) > 0) {
//how do i check on stories_buffer as it comes and split it based on delimiter \r\n
}
最佳答案
您可以将套接字包装到缓冲 IO 中,并在其上使用诸如 fgets()
之类的 stdio 函数:
FILE *f = fdopen(sockfd, "w");
fgets(buf, sizeof(buf), f);
这应该是基于线路的网络协议(protocol)的最佳选择。
关于C 对传入字符串的字符串操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59824638/