我正在尝试编写安全的文件输入。我有一个固定的缓冲区大小128.我想从文件中读取字符串,但在复制它们之前,我想检查它们的长度是否小于或等于128
。
我可以这样做:
fscanf(fp, "%128s", myString)
我已经看到以相同方式使用的scanf会限制读入的字符数,但是没有看到对fscanf和字符串使用过的任何引用?
答案 0 :(得分:3)
是的,你可以这样做,但你已经离开了1。 因此,如果您有一个长度为128个字符的数组:
char myString[128] = {'\0'};
fscanf(fp, %127s", myString);
您提到您已经看到scanf()
中使用的语法,这与以下内容相同:
fscanf(stdin, "%127s", myString); // just like scanf("%127s", myString);
请注意man page有关scanf()
和fscanf()
的格式字符串的相同信息
答案 1 :(得分:2)
如果您使用的是Windows平台,我认为您可以使用fscanf_s
,否则我认为最好使用fgets
和/或sscanf
:)< / p>
答案 2 :(得分:2)