1
IのdevのC++とコードを使用して(複数のプログラムで)このコードを試してみました::ブロックが、最初の取得()コマンドCINが続いたときに実行されることはありません飽きないだろう>>なぜこのコードで最初にgets()が機能しないのですか?
#include<iostream>
#include<stdio.h>
using namespace std;
int main()
{
int i;
char c[10], d[10];
cout<<"Enter int ";
cin>>i;
cout<<"Enter string ";
gets(c); // this is where things act all possessed
cout<<"Enter 2nd string ";
gets(d);
cout<<i<<endl<<c<<endl<<d;
return 0;
}
を私を助けてください。私が試してみました何
:
を私はcharとして変数を取って試してみましたが、その後、使用して入力を取ることだけで完璧に に動作しますが、その後、私は厳密に整数としてそれを取る必要がある、()の取得します、いくつかのプログラムでは、物事を行うことができるようにkeのインクリメント/デクリメント/何でも
'gets'を使用しないでください。これは古いC日からの遺物です。それはバッファオーバーフローが起こり易い関数の破損です。 Cを使っていたら、代わりに 'fgets'を使うことをお勧めします。しかし、C++を使っているので、 'cin'を' char'文字列の代わりに 'std :: string'と一緒に使う必要があると思います。 – user694733
@ user694733 OPの問題は、取得が安全ではなく、動作の誤解についてです。彼はcin.getLine()や他のものと同じ問題を抱くでしょう –
@DenisSheremetしたがってコメントではなく、答えです。しかし、それはかなりのくその関数だから、とにかく 'gets'を使うのはまだ誤りです。 – user694733