将char *转换为int

时间:2016-04-29 12:15:01

标签: c pointers char int

嗨,我有以下代码,由于某种原因我得到错误,似乎无法解决原因。

warning: return makes integer from pointer without a cast

我的代码是:

long convertToInt(char *convert) {
        char *p = convert;
        while(*p){
            if(isdigit(*p)) {
                long val = strtol(p, &p, 10);
                return val;
            } else {
                p++;
            }
        }
    return NULL;
}

4 个答案:

答案 0 :(得分:2)

NULL是指针,不是整数。它可以实现为#define,它扩展为0(整数常量)或((void *)0)空指针常量。如果要返回表示“发生错误”的值,您可能希望返回一个整数常量。值0和-1是传统的。

更好的是返回成功/失败的布尔状态值,并通过指针参数返回值:bool_t convertToInt(const char *s, long *value)。有关示例,请参阅标准库函数strtol

答案 1 :(得分:1)

你的功能返回long。所以将return语句更改为:

return 0L;

NULL的一个可能定义是(void *)0,当long时,return会转换为 <h3> <div class="container"> <span class="text"> FMUs </span> <span class=="button"> <button type="button" class="btn btn-default btn-xs"> <span class="glyphicon glyphicon-plus"></span> </button> </span> </div> </h3>

答案 2 :(得分:1)

正确的代码是,假设convert是一个带有数字的字符串:

long convertToLong(char *convert) {
    long val = 0L;
    char *p = convert;
    while (isdigit(*p)){
        val = val * 10 + (*p - '0');
        p++;
    }
    return val;
}

答案 3 :(得分:0)

问题在于:

return NULL;

返回NULL,但函数的返回类型为long

此外,您的函数名为convertToInt(),但它返回long,这意味着convertToLong()函数名称。