我想int
从 C 中的string
( char*
) 解析一个。我正在为嵌入式 linux 编写一个 linux 内核模块。我正在尝试使用simple_strtol
found here。
我在理想情况下解析的令牌将是数字。我遇到的问题"0"
是有效输入。如果无法解析值(错误),则strtol
返回。0
所以这意味着以下代码:
char* token = "should_fail";
char **endptr;
char value = simple_strtol(token, endptr, 10); // 10 is the base to convert to
if (!**endptr){
printf("failed!");
} else {
printf(value);
}
char* token = "0"; // should pass
char **endptr;
char value = simple_strtol(token, endptr, 10); // 10 is the base to convert to
if (!**endptr){
printf("failed!");
} else {
printf(value);
}
在两种情况下都打印出来0
,而在第一种情况下它应该失败。我正在尝试使用该*endptr
参数来检查转换是否成功,但它不起作用。根据我的研究,*endptr
是“指向已解析字符串末尾的指针将放置在此处”。而且我相信如果转换失败,指针将指向任何内容,因此我可以识别该失败。
有谁知道我如何"0"
正确解析并获得返回值,0
同时仍然识别失败的解析,而不是让它返回0
?