You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言实现十进制数字字符串转整数的相关问题咨询

C语言十进制数字符串转整数实现修正

现有代码的错误点

  • 变量使用错误:你声明了单个字符变量c,但实际需要遍历的是传入的字符串参数string,代码中c[i]属于无效写法,应该用string[i]读取对应位置的字符
  • 循环条件错误:for循环的终止条件写为i < n,但n初始值为0,会导致循环直接终止不执行。正确的终止条件应该是遍历到C字符串的结束标记\0,即string[i] != '\0'
  • 计算逻辑错误:n = n *10 +(c - '0')中c没有被赋值,应该替换为当前读取到的字符string[i]
  • 语法不规范:函数未声明返回值类型,分支语句末尾缺少必要分号
  • 边界逻辑缺失:如果整段字符串全是数字,原代码循环结束后没有返回值,会产生未定义行为

符合伪代码要求的正确实现

while循环版本(更贴合伪代码逻辑)

int stoi(char *string) {
    int n = 0;
    int i = 0;
    // 遍历字符串直到结束
    while (string[i] != '\0') {
        char c = string[i];
        // 判断当前字符是否为数字
        if (c >= '0' && c <= '9') {
            n = n * 10 + (c - '0');
            i++; // 读取下一个字符
        } else {
            // 遇到非数字直接返回结果
            return n;
        }
    }
    // 字符串全为数字时遍历结束后返回结果
    return n;
}

for循环版本

int stoi(char *string) {
    int n = 0;
    for (int i = 0; string[i] != '\0'; i++) {
        if (string[i] < '0' || string[i] > '9') {
            return n;
        }
        n = n * 10 + (string[i] - '0');
    }
    return n;
}

注:上述实现仅适配无前缀符号的正整数字符串,若需要支持负整数,可额外增加对字符串首字符是否为'-'的判断逻辑即可

内容的提问来源于stack exchange,提问作者Kbaker12

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 22:45:01