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

如何在C语言中使用toupper库函数实现姓名首字母大写提取?

姓名首字母大写提取问题解决

需求:提取姓名的首字母并以大写形式输出,例如输入tyler jae woodbury时输出TJW,现有代码无法实现大写转换,还存在字符串未终止的潜在问题。

现有代码:

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

string get_initials(string name, char initials[]);

int main(void)
{
    // 用户输入
    string name = get_string("Name: ");

    // 获取用户首字母
    char initials[10];
    get_initials(name, initials);
    printf("%s\n", initials);
}

string get_initials(string name, char initials[])
{
    int counter = 0;

    for (int i = 0, n = strlen(name); i < n; i++)
    {
        if (name[i] == ' ')
        {
            initials[counter] = name[i+1];
            counter++;
        }
        else if (i == 0)
        {
            initials[counter] = name[i];
            counter++;
        }
    }
    return initials;
}

修改方案

要实现大写转换并修复输出乱码问题,只需两处修改:

  1. 用<ctype.h>中定义的toupper()函数,对每个提取到的首字母做大写转换——该函数可将小写字符转为大写,大写字符保持不变。
  2. 循环结束后给initials数组添加字符串终止符'\0',确保C语言能正确识别为合法字符串,避免输出垃圾数据。

修改后的代码:

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

string get_initials(string name, char initials[]);

int main(void)
{
    // 用户输入
    string name = get_string("Name: ");

    // 获取用户首字母
    char initials[10];
    get_initials(name, initials);
    printf("%s\n", initials);
}

string get_initials(string name, char initials[])
{
    int counter = 0;

    for (int i = 0, n = strlen(name); i < n; i++)
    {
        if (name[i] == ' ')
        {
            // 对空格后的首字母做大写转换
            initials[counter] = toupper(name[i+1]);
            counter++;
        }
        else if (i == 0)
        {
            // 对第一个单词的首字母做大写转换
            initials[counter] = toupper(name[i]);
            counter++;
        }
    }
    // 添加字符串终止符,确保输出正常
    initials[counter] = '\0';
    return initials;
}

关键说明

  • toupper()接收单个字符参数,直接用它处理提取到的每个首字母,就能实现大写输出。
  • 必须添加'\0':C语言中字符串以该字符标记结束位置,缺失会导致printf("%s")读取数组后续的无效数据,出现乱码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 02:40:31