将非const char *解析为C中的整数

时间:2013-12-03 23:34:30

标签: c string

我对C库函数strtol等感到困惑。我试图在我传递给char*的{​​{1}}缓冲区上使用它们(这改变了位置那个指针)。但是,编译器抱怨我将strsep传递给char*,期望strtol

如果字符串不是const char*,如何将字符串解析为整数?在这种情况下我不能使用常量,因为我有时需要更改数组中的值(并且const char*也将更改数组开头指向的位置)。感谢。

编辑:这是我的尝试,使用stringsep(我知道现在已弃用,但它与atoi采用相同类型的参数,我会在切换到其他功能。)

strtol

(上下文是它正在解析一个分数列表。)

2 个答案:

答案 0 :(得分:1)

while((token = (char*)(uint64_t)strsep(&input, " ")) != NULL) {

完全坏了。

#define _BSD_SOURCE
#include <string.h>

while((token = strsep(&input, " ") != NULL) {

是一个微不足道的尝试来修复它,但是当inputchar const *指针时不起作用。

    current->denom = atoi(&token);

也没有意义;你必须写

    current->denom = atoi(token);

答案 1 :(得分:0)

在转换之前先复制字符串。