永发信息网

C读取文件过程中能用fscanf(fp,"%*[^\n]%*c");跳行吗?

答案:3  悬赏:30  手机版
解决时间 2021-03-23 14:36
C读取文件过程中能用fscanf(fp,"%*[^\n]%*c");跳行吗?
最佳答案
for (i=0;i<2;i++) fscanf(fin,"%*[^\n]%*c"); 跳过2行。
%* 是“跳过”
[^\n] 字符串的分隔符是 "\n", 中括号里可以写 分隔符 表
%*[^\n] 跳过 \n 前的所有 字符串。
%*c 是“跳过”行尾 的 换行符。

#include
#include
main()
{
FILE *fin;
int x,y;
int i;
fin=fopen("a.txt","r");
for (i=0;i<2;i++) fscanf(fin,"%*[^\n]%*c"); // 跳2 行
fscanf(fin,"%d %d",&x,&y); // 读 2 个 int
printf("%d %d\n",x,y); // 打出 3 33
fclose(fin);
}

文件例子:
1 2 3
2 345 56
3 33 333
4 444 444
全部回答

C读取文件过程中不能用fscanf(fp,"%*[^ ]%*c");跳行。
 
细节如下:
上面的写法是正则表达式的写法,C语言的fscanf函数是不支持正则表达式。
但是可以用fgets()函数实现跳行。

fscanf(fp,"%*[^ ]%*c");完全可以实现跳行。
你没有控制好,库函数都是千锤百炼的,我在使用过程中没有发现你说的问题。设置一个int变量ln,在读取变量时写成fscanf(fp,"%s%n",a,&n);的形式,那么,n的值就是s字符串的长度,需要移动fp时写fseek(fp,-n,SEEK_CUR);,就准确地把fp移到刚读的那个变量前面了。不过,为什么要反复读这一段?读出来了复制不是更简单吗?
追问格式中%n只能用来测字符串长度吗?我读取的基本是整形或者浮点型变量,发现在涉及换行时,让指针后退sizeof(int)就可能跳过两个变量去,有什么解决办法,谢谢!追答整型当然也行啊,读文件的时候都是按字符读的,符给变量时才由读函数转换成整型,所以并不影响正确统计指针移动了多少位!不能用sizeof(int)作为操作文件指针的根据吧?一个整型变量存入文件时可能是1个字节,比如存入一个4;也可能是10个字节,比如存入0x7fffffff!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
梅花手表适合多少岁带
来不及英语怎么说,时间过得太快,我已来不及
单选题LessonThreeis________LessonTwo.It's
均村邮政所地址在哪,我要去那里办事
从善宗旨是什么意思,经营理念是什么~?
谁有psp碧之轨迹有u物质的金手指吗
请问谁知道哪里有生产抱枕靠垫之类的厂家啊?
什么矿泉水含有天然钒(中国)
地球半径约为6400000米,则此数用科学记数法
用三原色怎么调色?
gtx1060显卡 玩英雄联盟全特效fps能达到多少
男生问女生非要这么互相折磨吗 说明对方彻底
美在窗之恋布艺在哪里啊,我有事要去这个地方
2015年七夕情人节黄金戒指三个心形是什么意思
箱的繁体字怎么写,箱繁体字怎么写
推荐资讯
万物生息是本什么书,请问一下,永不生息的意
球铁经过退火处理为什么得到的是珠光体95客户
就是 跨省寄信要多少钱←_←完全不了解这个
马上2017年呢,想给领导送本日历有推荐的没。
笔记本上的CPU 酷睿i系列 U M MQ HQ 有何差别
LabVIEW中使用报表生成工具,怎样把数据写到
以下几种光现象的产生,不属于光沿直线传播的
vissim4.3如何导入地图
橄榄核手串怎样配饰
非洲牛蛙怎么区分公母
ruggedeagle鞋怎么样
邯郸到开封的长途汽车经过大名县吗
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?