1

Cで文字列の行を取得したいのですが、どうすればよいですか? printf でフォーマット指定子 %s を使用すると、最初の空白までの文字しか使用できなくなります。それを取り除く方法は? getlineを使用する以外に他の方法はありますか? 前もって感謝します。

4

1 に答える 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 に答える