-1

誰かの名前を含む文字列を取得し、その名前のイニシャルを大文字で出力するコードに取り組んでいます。コードを実行するたびに、イニシャルが 2 回出力され続けます。この問題を修正する方法がわかりません。目的の出力を取得します。

これが私のコードです:

#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
4

1 に答える 1

0

あなたは使用printf()していてputchar()、そのうちの1つだけが必要です。呼び出すputchar()と、出力文字が返され、それが渡されてprintf()再度出力されます。

それをに変更します

fputc(toupper(pointer[0]), stdout);
于 2016-02-07T20:50:34.230 に答える