整理自:http://www.programfan.com/club/showtxt.asp?id=252333

大家好!我在用fscanf函数从文本文件中读取数据的时候,我想只读取一行中的前面几个数,后面的全部字符都不读取,然后接着读下一行。比如我的数据文件如下

23  456  #number
78 981  #number

我用

fscanf("%d%d\n", &a,&b);
fscanf("%d%d\n", &c, &d);

目的是想令a = 23, b = 456, c = 78, d = 981, 而读取的时候,想忽略每一行后面的“#number”字符串。但是我失败了。请问我该怎么样写格式控制?不想多定义一个字符串变量来读取这个字符串。谢谢!!

----------------------------------------------------------------------

引用
fscanf("%d%d%*s", &a,&b);
fscanf("%d%d%*s", &c, &d);



兄弟,这个方法我早前也试过了的,存在多个以空格隔开的字符串时不管用。

--------------------------------------------------------------------

引用
你没说有多个字符串呀

fscanf("%d%d%*[^\n]%*c", &a,&b);
fscanf("%d%d%*[^\n]%*c", &c, &d);



谢谢!经过测试,上述方法是很好的。同时发现,格式串中的%*c可以换成\n。此外,如果要从下一行开始读入的是数值变量,而不是字符变量,那么省略%*c或\n也完全没有问题。但如果下一个要读入的是字符变量,且要求从下一行开始的字符读,那么%*c或\n就不可以省略了。
----------------------------------------------------------------------

 

posted on 2011-03-29 11:42  Felix_VIP  阅读(6202)  评论(0编辑  收藏  举报