整理自: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就不可以省略了。 ----------------------------------------------------------------------
|