私は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
助けてくれてとても感謝します。