gpt4 book ai didi

c - 如何解析从套接字接收的字符串?

转载 作者:行者123 更新时间:2023-11-30 20:02:57 25 4
gpt4 key购买 nike

我是 C 新手,正在尝试解析从客户端发送的字符串。我最初以以下格式“命令值”发送数据,我想将命令存储在一个变量中,并将值存储在另一个变量中。

我正在尝试使用strtok() ,但每次我尝试解析接收到的字符串时,都会出现段错误。

我的代码有什么问题,如何修复它?

   char buff[MAX]; 
char command[32], value[32];
int n;

// Loop to continually read

for (;;) {
bzero(buff, MAX);

// read the message from client sent in format "command value"
read(sockfd, buff, sizeof(buff));

// Attempt to store string as variables separated by a space
strcpy(command, strtok(buff , " "));
strcpy(value, strtok(NULL, " "));

printf("%s %s", command, value);
}

最佳答案

代码需要确定读取了多少数据。使用 read(),

的返回值

如果将 buff 用作字符串,请确保输入以空字符终止。

for (;;) { 

// If buff is handled as a string, read one less to insure room for a later \0
ssize_t count = read(sockfd, buff, sizeof buff - 1);

if (count < 0) {
// read error
printf("Read error\n");
break;
}
if (count == 0) {
// All done
break;
}

buff[count] = '\0';
printf("<%.*s>\n", count, buff);
}

关于c - 如何解析从套接字接收的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57350234/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com