c语言:fscanf(fp,"%*[^\n]")为什么可以跳过全部字符直到下一个换行符

如题所述

%*[^\n]这个通配符的意思,就是跳过所有字符,直到换行符为止。

scanf是格式输入函数,功能是在屏幕上输入指定的信息。简单的来说和printf相似却不相同。

scanf调用格式: scanf("<格式化字符串>",<地址表>);

如:

#include <stdio.h>

int main()

{

int a,b,c;

printf(“input three data:\n”);//使用 scanf 之前先用 printf 提示输入。

scanf("%d%d%d",&a,&b,&c); // scanf 的“输入参数”中,前面的取地址符&记住

printf("%d,%d,%d/n",a,b,c);

return 0;

}

扩展资料:

C语言通配符:

%a,%A:读入一个浮点值(仅C99有效)    

%c:读入一个字符    

%d:读入十进制整数    

%i:读入十进制,八进制,十六进制整数    

%o:读入八进制整数    

%x,%X:读入十六进制整数    

%s:读入一个字符串,遇空格、制表符或换行符结束。    

%f,%F,%e,%E,%g,%G:用来输入实数,可以用小数形式或指数形式输入。    

%p:读入一个指针    

%u:读入一个无符号十进制整数    

%n:至此已读入值的等价字符数    

%[]:扫描字符集合    

%%:读%符号

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-06-23

%*[^\n]这个通配符的意思就是跳过所有字符 直到换行符为止。

^for (i=0;i<2;i++) fscanf(fin,"%*[^\n]%*c"); 跳过2行。

%* 是“跳过”

[^\n] 字符串的分隔符是"\n", 中括号里可以写 分隔符 表

%*[^\n] 跳过 \n 前的所有字符串。

%*c 是“跳过”行尾 的 换行符。

#include <stdio.h>

#include <stdlib.h>

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);

}

扩展资料:

可以使用星号代替零个、单个或多个字符。如果正在查找以AEW开头的一个文件,但不记得文件名其余部分,可以输入AEW*,查找以AEW开头的所有文件类型的文件,如AEWT.txt、AEWU.EXE、AEWI.dll等。要缩小范围可以输入AEW*.txt,查找以AEW开头的所有文件类型并.txt为扩展名的文件如AEWIP.txt、AEWDF.txt。

可以使用问号代替一个字符。如果输入love?,查找以love开头的一个字符结尾文件类型的文件,如lovey、lovei等。要缩小范围可以输入love?.doc,查找以love开头的一个字符结尾文件类型并.doc为扩展名的文件如lovey.doc、loveh.doc。

参考资料来源:百度百科-通配符

本回答被网友采纳
第2个回答  2020-06-24

因为%*[^\n]这个通配符的意思就是跳过所有字符 直到换行符为止。

*是跳过,^\n是“换行符”,连起来就是“跳过不是换行符的所有字符”,直到遇到第一个换行符就停下了。

fscanf是不定参数的。前者从fp中读取一个v,后者从fp中读取若干个空白字符,包括' ','\n','\t'等。

扩展资料:

fscanf 函数原型为 int fscanf(FILE * stream, const char * format, [argument...]);。format 说明符形式为[=%[*][width][modifiers]type=]

其功能为根据数据格式(format),从输入流(stream)中读入数据,存储到argument中,遇到空格和换行时结束。fscanf位于C标准库头文件<stdio.h>中。

参考资料来源:百度百科—fscanf

本回答被网友采纳
第3个回答  2015-12-02
%*[^\n]
这个通配符的意思就是
跳过所有字符 直到换行符为止。

更具体的 你可以百度
C语言scanf中正则的使用
有很多说明的文章的。本回答被网友采纳
第4个回答  2015-12-02
你写的就是这个意思啊!*是跳过,^\n是“不是换行符”,连起来不就是“跳过不是换行符的所有字符”吗?直到遇到第一个换行符就停下来了!
相似回答