知道 fscanf 中参数的大小(fp , "%s" , strr1)
Know size of argument in fscanf(fp , "%s" , strr1)
char str1[10];
fscanf(fp , "%s", str1);
我想知道%s
的大小,然后再分配给str1
以避免在输入数据巨大的情况下崩溃。
由于这是C++,因此您不必依赖fscanf
。我们可以通过使用std::istream
来完全避免缓冲区溢出:
std::string readWord(std::istream& input) {
std::string word;
if(input >> word) {
return word;
} else {
// Handle error
}
}
这将自动读取字符,直到遇到第一个空格字符,并且它将根据需要自动分配内存。
您可以指定要读取的最大字符数:
fscanf(fp, "%9s", str1);
这不会将超过 10 个字符写入str1
包括 null 终止符。
但是在C++你应该使用在这方面安全的流和字符串。
相关文章:
- 知道 fscanf 中参数的大小(fp , "%s" , strr1)
- 'fopen'返回格式错误的'fp'
- 如何将文件描述符 (int fd) 转换为文件指针 ( 文件* fp )
- 使用FP:快速导致错误的VC 结果(不仅仅是不准确)结果 - 这是编译器错误
- Is $fp == $rbp in gdb?
- 在构造函数[C ]中的FP分配上崩溃
- /fp:strict 和 /fp:precise 之间的区别
- fopen_s(&fp, "FileName.txt" ,w+);当我给出文件的相对路径时不起作用,并且仅在给出绝对路径时才有效
- 选定的处理器不支持拇指模式"swp r3,sl,[fp]"
- VS2013:带有float和/EHa+/fp:strict的编译器错误
- FP号码的指数字段不是我预期的,为什么?
- c++ fp树或前缀树
- 是否有一种可编程的方法来估计CPU执行fp操作所需的时间
- 什么是C++翻译 Matlabs 'fread(fp, 1, 'int32')' 和 fread(fp, n, 'uchar')
- fp:精确与fp:严格性能