欢迎访问宙启技术站
智能推送

怎么用C语言寻找字符串中最大一段

发布时间:2023-05-14 14:36:50

以下是使用C语言代码寻找字符串中最大一段 1000 字的示例:

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

#define MAX_LEN 100000 // 最大字符串长度

int main()
{
    char str[MAX_LEN + 1];
    int cnt = 0, max_cnt = 0, start = 0, end = 0, max_start = 0, max_end = 0;

    printf("请输入字符串:");
    fgets(str, MAX_LEN, stdin); // 从标准输入中获取字符串

    for (int i = 0; i < strlen(str); i++) {
        if (str[i] != ' ') {
            cnt++; // 统计连续不为空格的字符数
            if (cnt == 1) {
                start = i; // 记录起始位置
            }
        } else {
            cnt = 0; // 出现空格时重置计数器
        }
        if (cnt > max_cnt) {
            max_cnt = cnt;
            end = i; // 记录结束位置
            max_start = start;
            max_end = end; // 记录最大段的起始和结束位置
        }
    }

    printf("
最大一段 %d 个字符是:
", max_cnt);
    for (int i = max_start; i <= max_end; i++) {
        printf("%c", str[i]);
    }
    printf("
");

    return 0;
}

在上面的代码中,我们首先声明一个字符数组 str,用于存放输入的字符串,同时设定了一个最大字符串长度 MAX_LEN。然后,通过调用 fgets() 函数从标准输入中获取字符串。

接着,我们遍历字符串中的每个字符,使用一个计数器 cnt 统计连续不为空格的字符数,并通过变量 startend 记录当前连续段的起始和结束位置。当出现空格时,重置计数器 cnt。如果当前连续段的字符数大于之前存储的最大值 max_cnt,则更新最大值 max_cnt 及其对应的起始和结束位置 max_startmax_end

最后,我们输出求解结果:输出最大一段的字符数 max_cnt,并通过循环输出字符串中对应的字符。