拆分字符串并在 C 中打印大写的第一个字符

Splitting strings and printing the capitalized first characers in C

我正在编写一个代码,该代码采用包含某人姓名的字符串并打印该姓名的首字母大写,每当我 运行 我的代码时,我总是将首字母打印两次,但我没有这样做'知道如何解决此问题并获得所需的输出。

这是我的代码:

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

int main(void)
{
    string name = GetString();
    char* pointer;
    pointer = strtok(name, " ");
    while (pointer != NULL)
    {
        printf("%c", putchar(toupper(pointer[0])));
        pointer = strtok (NULL, " ");
    }
    printf("\n");
}

当我 运行 代码例如:ahmed salah eldin

输出:

AASSEE

我只需要:

ASE

您正在使用 printf()putchar() 您只需要其中之一。当您调用 putchar() 时,它 returns 输出字符然后传递给 printf() 并再次输出。

将其更改为

fputc(toupper(pointer[0]), stdout);