【发布时间】:2016-12-13 21:45:02
【问题描述】:
我正在尝试拆分字符串int cube = 29;
当一切都被拆分时,我在令牌中得到一个空值,当我尝试将令牌作为字符串分配给 buf 时程序崩溃。这是怎么回事?我想得到 29 并打印出来
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char buf[500];
sprinf(buf, "int cube = %i", 29);
const char del[] = " = ";
char *token;
token = strtok(buf, del);
char temporary[500];
sprintf(temporary, "%s", token);
int number = atoi(temporary);
puts(number);
return 0;
}
【问题讨论】:
-
我们无法调试不完整的代码。请提供minimal reproducible example。但请仔细阅读 strtok 手册。它不会搜索整个分隔符字符串。它匹配分隔符字符串中的 任何 个字节。
-
你为
buf分配内存了吗? -
您无需在分隔符列表中为
strtok()重复空格。它不是在寻找字符串,而是在寻找列表中的任何字符。 -
您试图将
"int cube = 29;"拆分为什么?您的代码在第一个空格处将其拆分。所以第二个令牌不会是"29" -
"当一切都被拆分时,我在令牌中得到一个空值。"是的,
strtok就是这样工作的。