Cで文字列の行を取得したいのですが、どうすればよいですか? printf でフォーマット指定子 %s を使用すると、最初の空白までの文字しか使用できなくなります。それを取り除く方法は? getlineを使用する以外に他の方法はありますか? 前もって感謝します。
質問する
226 次
1 に答える
2
scanf
入力ストリームから行を取得するための適切な選択ではありません。あなたはそれを非常に簡単に行うことができますが:
buf[SIZE];
scanf ("%[^\n]\n", buf);
バッファ オーバーフロー エラー/攻撃を受けるリスクがあります。
より良い方法は、 を使用して一度に 'SIZE' 文字を読み取りfgets
、動的に割り当てられたバッファーにデータをコピーして、いっぱいになったときにサイズを変更できるようにすることです。
buf[SIZE];
do {
fgets (buf, SIZE, stdin);
/* Handle copying to dynamic buffer and resize over here */
} while (/*check we haven't reached eol*/);
于 2013-01-08T13:22:18.430 に答える