b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

fscanf 字符_fscanf函数_fscanf读取一行字符串(2)

电脑杂谈  发布时间:2016-11-27 04:03:51  来源:网络整理

Figure2:fscanf()函数读取数据过程

文件指针最开始指向ffReadFile.dat的第一个字符(即1)处,然后fscanf()根据“format”中的第一个“转换符”读取文件中的内容直到不符合当前“转换符”能够转换的字符为止,如果不符合“转换符”的数据为空或者tab则舍掉空或者tab使文件指针指向下一个数据。然后fscanf()继续在文件中匹配下一个“转换符”的数据。直到为所有的“转换符”匹配完数据为止。

当不符合“特定式”所要求的数据且不为空和tab时,fscanf()将匹配到符合“特定式”的数据赋给地址后不再往下读。如现将ffReadFile.dat中的内容修改如下:

Figure3:ffReadFile.dat修改

再用以下代码读取第一行数据,

re	= fscanf(pF, "%d%d%d", &oLine.p, &oLine.l, &oLine.x);
if( 3 == re){
		//Print on stdout
		printf("%d\t%d\t%d\n", oLine.p, oLine.l, oLine.x);
}else{
    switch(re){
        case 1:
            printf("oLine.p: %d\n", oLine.p);
            break;
        case 2:
            printf("oLine.p: %d, oLine.l: %d\n", oLine.p, oLine.l);
            break;
        default:
            printf("fscanf() read TypeLine error,re: %d\n", re);
            break;
}
re的将是1,从而输出读取成功的oLine.p的。对于此时的情况,只为&oLine.p成功获取了数据,另外两个地址的数据都获取失败。

使用‘*’可以跳过文件中的部分内容,比如还是图2中的内容,利用以下的语句替换上个程序的fscanf()语句来读取第一行数据:

re	= fscanf(pF, "%d%*3c%d%d", &oLine.p, &oLine.l, &oLine.x);

那么程序的输出结果为:100 3 2

%*3c表示跳过3个字符内容。结合2.1程序就得到了如期的输出结果。

如果ffReadFile.dat文件中的内容如下,

Figure4:ffReadFile.dat

那么如果要读取文件中的第一行内容,书写以下语句即可:

fscanf(pF, "%d,%d,%d", &oLine.p, &oLine.l, &oLine.x);
以上提到的逗号甚至可以换成’a’这样的字符,但不可以为字符串(Debian Linux 下验证)。fscanf 字符

针对上图的文件,可以使用以下语句

fscanf(pF, "%3d,%d,%d", &oLine.p, &oLine.l, &oLine.x);
为&oLine.p读取只有3位长的数据,但因为此时文件指针指向10000中最后的那个0使文件中内容与fscanf()“format”不再匹配,后两个地址不能够正确的获取数据。


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-22018-2.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...