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

新手求助:这段计算字符串长度的C语言代码为何无法正常运行?

代码无法运行的原因及修复方案

你的代码存在几个关键问题,会导致程序运行异常或不符合预期:

  • 变量i未初始化:你只声明了int i, cnt =0;,但i的初始值是随机的垃圾值,直接用ptr[i]会访问字符串数组以外的内存区域,触发未定义行为(比如程序崩溃、输出乱码)。
  • 终止条件类型不匹配:字符串的结束标记是字符类型的'\0',但你用了指针类型的NULL——虽然二者在数值上可能都是0,但逻辑上属于错误的类型混用,编译器大概率会抛出警告。
  • main函数缺少返回值:标准C语言要求main函数必须返回一个int类型的值,你的代码末尾没有return语句,不符合规范,部分严格的编译器会报错。

修复后的代码示例

#include <stdio.h>

int main()
{
    char * ptr = "hello";
    int i = 0, cnt =0; // 初始化i为0,从字符串首字符开始遍历
    while(ptr[i] != '\0') // 使用正确的字符串结束符判断
    {
        i++;
        cnt++;
    }
    printf("字符串长度:%d\n", cnt); // 打印结果验证
    return 0; // 符合标准的返回值
}

更简洁的写法(直接遍历指针)

#include <stdio.h>

int main()
{
    char * ptr = "hello";
    int cnt =0;
    while(*ptr != '\0') // 直接取当前指针指向的字符
    {
        cnt++;
        ptr++; // 指针向后移动一位
    }
    printf("字符串长度:%d\n", cnt);
    return 0;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 11:06:21