このプログラムを作成しました。ユーザーの住所、名前、仕事を取得します。次に、すべてを 1 つの文字列にまとめて、その文字列を出力します。(これを行うより良い方法があることは知っています)
char str[600];
char adrs[200];
char name[10];
char wrk[200];
cout<<"Enter your name and press ENTER: ";
cin.getline(name,10);
cout<<"\nEnter your adress and press ENTER:";
cin.getline(adrs,200);
cout<<"\nEnter your workplace and press ENTER:";
cin.getline(wrk,200);
strcpy(str,"My name is ");
strcat(str,name);
strcat(str,"\nand i live at ");
strcat(str,adrs);
strcat(str, "\nI also work at ");
strcat(str, wrk); strcat(str, "\n\n");
cout<<str<<endl;
ここで10文字を超える名前を書くと、プログラムはユーザーが入力した最初の9文字を期待どおりに受け取りますが、その後はプログラム内の次の文字をすべてスキップし、cin.getline()
出力str
してプログラムを終了します。
なぜこれが起こり、どのように修正するのですか?