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

C语言回文识别程序调用void类型isalphabet函数编译失败如何解决?

C语言回文判定程序修复方案

问题梳理

  • 缺少必要头文件:strcmp、strlen依赖<string.h>,isalpha依赖<ctype.h>,未引入会直接导致编译报错
  • isalphabet函数未提前声明,主函数调用时编译器无法识别函数原型
  • isalphabet调用方式错误:该函数需要传入原始输入字符串、存储过滤结果的空字符串两个参数,原有inputstring(isalphabet)的调用逻辑完全错误
  • isalphabet内部的字符串结束符\0赋值放在了for循环体内,每次循环都会覆盖结束符,会导致过滤结果异常
  • 输入用scanf("%s")只能读取到空格前的内容,无法处理带空格的输入场景
  • 现有回文判定大小写敏感,可按需调整为大小写不敏感,适配更多场景

修复后完整代码

#include <stdio.h>
#include <string.h>
#include <ctype.h>

// 提前声明所有自定义函数
int isPalindrome(char inputString[]);
void isalphabet(char inputString[], char nystring[]);

int main() {
    char inputString[100];
    char filteredString[100];
    int ret;

    // 用fgets读取带空格的完整输入
    fgets(inputString, sizeof(inputString), stdin);
    // 去除fgets读取到的末尾换行符
    inputString[strcspn(inputString, "\n")] = '\0';

    // 调用过滤函数,仅保留字母
    isalphabet(inputString, filteredString);

    // 传入过滤后的字符串做回文判定
    ret = isPalindrome(filteredString);

    printf("回文判定结果:%d", ret);
    return 0;
}

int isPalindrome(char inputString[]) {
    int count = 0;
    int result;

    while (inputString[count] != '\0') {
        count++;
    }

    char stcp[100];
    int i = count, j = 0;

    while (i != 0)
        // 若需要大小写不敏感的判定,可改为 stcp[j++] = tolower(inputString[--i]);
        stcp[j++] = inputString[--i];

    stcp[j] = 0;

    if (strcmp(inputString, stcp) == 0) {
        result = 1;
    } else {
        result = 0;
    }

    return result;
}

void isalphabet(char inputString[], char nystring[]) {
    int count, i, ny_i = 0;
    count = strlen(inputString);

    for (i = 0; i < count; i++) {
        if (isalpha(inputString[i]) != 0) {
            // 若需要大小写不敏感的判定,可改为 nystring[ny_i] = tolower(inputString[i]);
            nystring[ny_i] = inputString[i];
            ny_i++;
        }
    }
    // 字符串结束符移到循环结束后赋值
    nystring[ny_i] = '\0';
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 00:27:04