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

C语言字符串连续相同字符检测代码异常排查

问题诊断与修复方案

1. 核心错误:scanf格式符使用错误

你当前代码中用%d作为scanf的格式符,%d是用于读取整数的格式符,无法正确读取字符串输入,导致输入的字符串根本没有正确写入inp数组,所以seqCount函数无论如何都检测不到连续字符,始终返回FALSE。
修复方案:将scanf("%d", &inp);改为scanf("%s", inp);,注意字符串数组名本身就是地址,不需要加取地址符&。

2. 潜在边界问题:循环越界风险

seqCount函数的循环条件inp[i] != '\0'会导致当i指向字符串末尾的\0前一个字符时,inp[i+1]访问的是字符串结束符\0,虽然这个问题在当前逻辑下不会触发错误结果,但属于不规范的内存访问,建议优化循环条件,同时可以增加提前终止逻辑提升效率,找到连续字符后无需遍历整个字符串。

修复后的完整代码

#include <stdio.h>
#define TRUE 1
#define FALSE 0

int seqCount (char inp[])
{
    int countChar = 0;
    // 优化循环条件避免越界
    for(int i = 0; inp[i] != '\0' && inp[i+1] != '\0'; i++){
        if(inp[i] == inp[i+1]){
            countChar++;
            // 找到连续字符后直接终止循环
            break;
        }
    }
    return countChar > 0 ? TRUE : FALSE;
}
int main ()
{
    char inp[100];
    printf("Enter the string: \n");
    // 修正格式符,去掉多余的取地址符
    scanf("%s", inp);
    if(seqCount(inp)){
        printf("The string contains a sequence.\n");
    }
    else{
        printf("The string does not contain a sequence.\n");
    }
    return 0;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 15:15:01