1

安全なファイル入力を書き込もうとしています。128バッファサイズを128に固定しています。ファイルから文字列を読み取りたいのですが、コピーする前に、長さが以下であることを確認したいと思います。

私は次のようなことをすることができますか?

fscanf(fp, "%128s", myString)

同じようにscanfを使用すると、読み込まれる文字数が制限されることを確認しましたが、fscanfと文字列でそのように使用されていることへの参照はありませんか?

4

3 に答える 3

4

はい、できますが、1つずれています。したがって、長さが128文字の配列がある場合は、次のようになります。

char myString[128] = {'\0'};
fscanf(fp, %127s", myString);

で使用されている構文を見たことがあるとおっしゃいましたが、それは次scanf()と同じです。

fscanf(stdin, "%127s", myString); // just like scanf("%127s", myString);

マニュアルページscanf()には、とのフォーマット文字列に関する同じ情報があることに注意してください。fscanf()

于 2013-03-25T18:11:08.140 に答える
2

Windowsプラットフォームを使用している場合は、fscanf_sそれ以外の方法でも使用できると思います。使用する方が良いと思いfgetsますsscanf

于 2013-03-25T18:08:20.377 に答える
2

char * fgets ( char * str, int num, FILE * stream );バッファオーバーランを回避するために使用できます

お気に入り:

fgets(myString, 127, fp);
于 2013-03-25T18:08:34.740 に答える