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

C语言如何将接收char数组的双逗号检测函数改为接收char*参数

C语言双逗号检测函数修改指南

形参类型转换方法

C语言中数组作为函数形参时会自动退化为指向首元素的指针,char a[]和char* a作为形参语义完全等价。你只需要直接修改函数定义的首行,将形参声明改为char* a即可完成需求要求的参数类型适配。

原代码Bug修复

原代码存在三处影响运行的语法和逻辑问题:

  • 字符比较误用双引号:C语言中单引号包裹单个字符,双引号包裹字符串(本质为常量指针),原代码用" "、","和字符变量比较属于类型不匹配,逻辑完全错误。
  • 重复执行下标自增:for循环头部已经定义了i++,循环体内又额外添加i++,会导致每次循环跳过一个字符,出现漏检。
  • 字符串遍历长度硬编码:固定循环128次会在输入字符串短于128时访问越界内存,应该以字符串结束符'\0'作为循环终止条件。

修复后完整代码

int findDoubleComma(char* a)
{
    int comma = 0;
    int i;
    for(i = 0; a[i] != '\0'; i++)
    {
        if(a[i] == ' ')
            continue;
        if(a[i] != ',')
        {
            comma = 0;
        }
        else
        {
            if(comma == 1)
                return -100;
            comma = 1;
        }
    }
    return 1;
}

代码逻辑说明

保留了你原本的“跳过空格后检测连续逗号”的逻辑:用comma变量标记上一个非空格字符是否为逗号,遇到逗号时若标记已为1则说明检测到连续双逗号,直接返回-100;遍历完整个字符串都没有检测到则返回1。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 22:15:00