c - 尝试找出将每个字符串的第一个字母大写作为输入

标签 c

printf("Please enter your fullname: \n");
string s = GetString();
if (s != NULL) {
    for (int i = 0, n = (int) strlen(s); i < n; i++) {
        if (islower(s[i])) {
            toupper(s[i]);
        }
        if (i == 0 || isspace(s[i] - 1)) {
            printf("%c", (s[i]));
        }
    }
    printf("\n");
}

输入:Zamyla Chan 正确输出:ZC 我的程序输出:Z

请用伪代码解释我接下来要做什么。这样我就可以将姓氏的第一个字母大写。

最佳答案

看看你的代码的这一部分,

 if(i == 0 || isspace(s[i] - 1))

此处,s[i] 是字符串 s 的第 i 个字符。 s[i] - 1 是从字符 s[i] 本身减去 1。然后您将检查该字符是否是空格。

您想要做的是检查第 i - 1th 个字符是否为空格。为此,您将执行类似的操作,

 if(i == 0 || isspace(s[i - 1]))

关于c - 尝试找出将每个字符串的第一个字母大写作为输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33461341/

相关文章:

c++ - 以 posix 方式绑定(bind)到特定的 NIC

将数字转换为具有多个参数的字符串

编译C程序 : Dynamical type definition leads to errors

c++ - LD_LIBRARY_PATH 不包含导出路径

c - 关于 Linux 中的错误编号

c - 终端上不打印单个字符

c - Ruby 1.9.1-p378 C 扩展 rb_block_call 怪异

c - 为什么 mprobe 在检查字符串文字时会失败?

c - 在主程序中正确包含功能

c - 如何访问 C 中结构中索引处的元素?