我正在尝试编写安全的文件输入。我的缓冲区大小固定为 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
:)