我对C库函数strtol
等感到困惑。我试图在我传递给char*
的{{1}}缓冲区上使用它们(这改变了位置那个指针)。但是,编译器抱怨我将strsep
传递给char*
,期望strtol
。
如果字符串不是const char*
,如何将字符串解析为整数?在这种情况下我不能使用常量,因为我有时需要更改数组中的值(并且const char*
也将更改数组开头指向的位置)。感谢。
stringsep
(我知道现在已弃用,但它与atoi
采用相同类型的参数,我会在切换到其他功能。)
strtol
(上下文是它正在解析一个分数列表。)
答案 0 :(得分:1)
while((token = (char*)(uint64_t)strsep(&input, " ")) != NULL) {
完全坏了。
#define _BSD_SOURCE
#include <string.h>
while((token = strsep(&input, " ") != NULL) {
是一个微不足道的尝试来修复它,但是当input
是char const *
指针时不起作用。
在
current->denom = atoi(&token);
也没有意义;你必须写
current->denom = atoi(token);
答案 1 :(得分:0)
在转换之前先复制字符串。