fscanf()函数详解

这两天在做语法分析程序,因为之前写完了词法分析程序,所以做语法分析时直接读取了词法分析的“out.txt”文件(单词流文件)。在读取时,遇到fscanf(fp, "%s %s\n", token, token1); 以及fscanf(fp, "%s %s\n", &token, &token1); 两种fscanf函数,token是char(20)。

之前就对文件的输入输出不太了解,所以这时也没敢去修改,运行的时候总是会在中间出现异常,经过测试是某个单词未成功读入,于是就想到了这个问题。

int fscanf(FILE *stream, char *format,[argument...]);

这个是fscanf的函数声明,里面可以看到,第一个参数是文件指针,指向要从该文件中将数据读出,第二个参数是格式字符串,就像scanf("%s %s\n"); 的一样,第三个参数是输入列表,会将文件中的数据保存到输入列表中去。

for example:

文件指针指向out.txt文件,该文件中第一行:
“function function”两个function中间有空格或缩进

执行

fscanf(fp, "%s %s\n", token, token1);

执行后结果:
token[20] = “function”
token1[20] = “function”


从这个例子中可以看到fscanf和scanf的用法类似,唯一不同的就是fscanf多了一个文件指针的参数。当输入列表中的变量类型为字符数组,token前就不用加&,因为token就表示字符数组首地址。

  • 17
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值