仅使用以下行给出文件:
abc
第二行为空。
如何用fscanf读取它?
选项1:
FILE* f = fopen("f","r");
char str[3];
fscanf(f , "%s" , str);
选项2:
FILE* f = fopen("f","r");
char str[4];
fscanf(f , "%s" , str);
正确的方法是什么?
答案 0 :(得分:1)
正确的方法是在fscanf
的格式字符串中指定长度。文档中的相关行是:
字符串输入转换存储一个终止的空字节('\ 0')来标记输入的结尾;最大字段宽度不包含此终结符。
在第一种情况下,必须是
fscanf(f , "%2s" , str);
在第二种情况下:
fscanf(f , "%3s" , str);
因此,“正确”选项将是第二个。