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

C语言如何判断输入首字符是否出现在第10-16位并输出指定内容

实现思路

通过动态内存分配存储输入字符串,无需预设固定长度,核心逻辑如下:

  • 逐字符读取输入,通过realloc动态扩容存储缓冲区,支持任意长度输入
  • 提取空格前的首个字符,定位第一个空格的位置,确定后续需要输出的内容起点
  • 校验空格后子串的第10~16位(自然计数)区间内是否存在和首字符相等的字符
  • 存在则输出空格后的全部内容,否则无输出

实现代码

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

int main() {
    char *input = NULL;
    size_t buf_size = 0;
    size_t len = 0;
    int c;

    // 动态读取整行输入,无长度限制
    while ((c = getchar()) != '\n' && c != EOF) {
        if (len + 1 >= buf_size) {
            // 每次扩容128字节,可根据实际场景调整
            buf_size += 128;
            char *temp = realloc(input, buf_size);
            if (!temp) {
                free(input);
                perror("内存分配失败");
                return 1;
            }
            input = temp;
        }
        input[len++] = c;
    }
    input[len] = '\0';

    if (len == 0) {
        free(input);
        return 0;
    }

    // 提取空格前的首个字符
    char first_char = input[0];
    // 定位第一个空格的位置
    char *space_pos = strchr(input, ' ');
    if (!space_pos) {
        // 输入无空格直接返回
        free(input);
        return 0;
    }

    // 计算校验区间:空格后第10~16位(自然计数)转换为0基下标
    size_t after_space_idx = space_pos - input + 1;
    size_t start_check = after_space_idx + 9;
    size_t end_check = after_space_idx + 15;
    int exist = 0;

    // 越界保护,输入不足时只校验到字符串末尾
    if (end_check >= len) {
        end_check = len - 1;
    }
    if (start_check <= end_check) {
        for (size_t i = start_check; i <= end_check; i++) {
            if (input[i] == first_char) {
                exist = 1;
                break;
            }
        }
    }

    // 符合条件则输出空格后全部内容
    if (exist) {
        printf("%s\n", space_pos + 1);
    }

    free(input);
    return 0;
}

逻辑说明

  • 动态内存部分:每次读取字符前判断缓冲区剩余空间,不足就调用realloc扩容,完全不需要预设输入长度上限
  • 计数适配:需求中提到的第10~16位为空格后子串的自然计数,代码中转换为数组0基下标处理,同时做了越界保护,输入不足16位时只校验到输入末尾
  • 结果输出完全匹配预期示例:首字符在指定区间存在时才输出空格后的所有内容,否则无任何输出

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 11:06:01