安全なファイル入力を書き込もうとしています。128
バッファサイズを128に固定しています。ファイルから文字列を読み取りたいのですが、コピーする前に、長さが以下であることを確認したいと思います。
私は次のようなことをすることができますか?
fscanf(fp, "%128s", myString)
同じようにscanfを使用すると、読み込まれる文字数が制限されることを確認しましたが、fscanfと文字列でそのように使用されていることへの参照はありませんか?
安全なファイル入力を書き込もうとしています。128
バッファサイズを128に固定しています。ファイルから文字列を読み取りたいのですが、コピーする前に、長さが以下であることを確認したいと思います。
私は次のようなことをすることができますか?
fscanf(fp, "%128s", myString)
同じようにscanfを使用すると、読み込まれる文字数が制限されることを確認しましたが、fscanfと文字列でそのように使用されていることへの参照はありませんか?
はい、できますが、1つずれています。したがって、長さが128文字の配列がある場合は、次のようになります。
char myString[128] = {'\0'};
fscanf(fp, %127s", myString);
で使用されている構文を見たことがあるとおっしゃいましたが、それは次scanf()
と同じです。
fscanf(stdin, "%127s", myString); // just like scanf("%127s", myString);
マニュアルページscanf()
には、とのフォーマット文字列に関する同じ情報があることに注意してください。fscanf()
Windowsプラットフォームを使用している場合は、fscanf_s
それ以外の方法でも使用できると思います。使用する方が良いと思いfgets
ますsscanf
。
char * fgets ( char * str, int num, FILE * stream );
バッファオーバーランを回避するために使用できます
お気に入り:
fgets(myString, 127, fp);