1

私はCの初心者で、テキストの書式設定を扱うのは少し難しいです。イニシャルJS (文字間の空白)を入力してJohn Smithという名前を付けようとすると、イニシャル配列に値JSJohn Smithが格納されますが、これはあるべきではありません。

誰かがなぜそれが起こっているのか説明できますか.

これが私のコードスニペットです(単なる例)

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

struct Person
{
    char initials[5];
    char name[35];
};

int main(void)
{
    struct Person person;
    printf("Please enter symbols: ");
    scanf("%6[^\n]%*c", person.initials);
    printf("%s\n", person.initials);
    printf("Please enter your name: ");
    scanf("%35[^\n]%*c", person.name);
    printf("%s\n", person.name);
    printf("%s\n", person.initials);
}

出力:

Please enter symbols: J. S.
J. S.
Please enter your name: John Smith
John Smith
J. S.John Smith

助けてくれてとても感謝します。

4

1 に答える 1