我正在使用 fscanf 从 CSV 文件中读取一些值,我想确保读入这些值的数据不会太大而导致缓冲区溢出。
我的 csv 文件的格式为 int,string,string,我要读取的代码如下(稍后我会修复 while 条件):
while(fscanf(f, "%d,%[^,],%[^,]", &inArray[i].ID, inArray[i].label, inArray[i].brand)/*insert while condition here*/
当使用 scanf 时,我会像这样指定长度以防止溢出:scanf("%20f", example);
但如果我尝试与上面相同:while(fscanf(f, "%d,%20[^,],%10[^,]", &inArray[i].ID, inArray[ i].label, inArray[i].brand)/*在此处插入 while 条件*/
我在执行代码时崩溃了。
最佳答案
试试fscanf_s
,这个函数有安全增强。
http://msdn.microsoft.com/en-us/library/6ybhk9kc(v=vs.90).aspx
关于c++ - 使用 fscanf 时防止缓冲区溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18845234/