sscanf との連携
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/05/02 06:53 UTC 版)
「fgets」の記事における「sscanf との連携」の解説
fgets は文字列を読み込む関数なので、当然ながら scanf の数値入力に対してそのまま置き換えることは出来ない。このような場合は fgets でまず文字列として取り込んだ後、sscanfを用いて入力することで置き換えることが出来る。例えば int i;if (scanf("%d", &i) != 1) { // エラー処理} となるようなコードは int i;char temp[128]; // サイズはとりあえず適当に置いておくfgets(temp, 128, stdin);// バッファクリアの処理は省略if (sscanf(temp, "%d", &i) != 1) { // エラー処理} とすることで置き換えることが出来る。ただし、このように置き換えた場合には読み込むバッファの長さが十分であるという事を考慮しなければならない。また複数の数値を読み込む書式ではエラー処理のパターンが異なる(scanf#異常な入力が行われた時の処理を参照)ため、その事を十分認識しておく必要がある。
※この「sscanf との連携」の解説は、「fgets」の解説の一部です。
「sscanf との連携」を含む「fgets」の記事については、「fgets」の概要を参照ください。
- sscanf との連携のページへのリンク