×

fscanf解析文件

fscanf解析文件(ifc文件解析器)

admin admin 发表于2023-04-04 20:47:08 浏览48 评论0

抢沙发发表评论

本文目录一览:

fscanf 读取文件

fscanf(fp,"%d",n);

它的作用是从fp读取一个整数,存入n变量。

你就把它当作scanf("%d",n)来理解就行了,只不过fscanf(fp,"%d",n);是从fp文件读取,而scanf("%d",n);是从键盘读取,除此之外,两个函数是相同。

因为

for(i=0;i3;i++) fprintf(fp,"%d",a[i]);

将数组a的三个数字依次写入文件fp,并且数字之间没有分隔符,所以这三个数字会连在一起,也就是123,这样,后面的fscanf()读取时,当然会读取出123这个数字,而不是1

C语言用fscanf()函数如何读取文件全部内容?

void read_txt(const char* Input, const char* Output){

FILE *fin = fopen(Input, "rb");//以二进制读入

FILE *fout = fopen(Output, "w");

unsigned char ch1,ch2;

while(fscanf(fin, "%c%c", ch1,ch2) != EOF){//直到文件结束

fprintf(fout, "%d%d", ch1,ch2);//以10进制输出

}

}

int main(){

read_txt("D:/IN.txt","D:/OUT.txt");//txt文件目录

return 0;

}

注:判断文件结束处的语句:fscanf(fin, "%c%c", ch1,ch2)。其中两个%c之间不能加空格,否则读到的二进制文件会不完整,比源文件少好多个字节

C语言文件读取fscanf(),该怎么处理

fscanf位于头文件stdio.h中,函数原型为int fscanf(FILE*stream, constchar*format, [argument...]); 其功能为根据数据格式(format)从输入流(stream)中写入数据(argument);与fgets的差别在于:fscanf遇到空格和换行时结束,注意空格时也结束,fgets遇到空格不结束。-fscanf解析文件

函数名: fscanf

功 能: 从一个流中执行格式化输入,fscanf遇到空格和换行时结束,注意空格时也结束。这与fgets有区别,fgets遇到空格不结束。

返回值:整型,成功返回读入的参数的个数,失败返回EOF(-1)。

用法:

1 int fscanf(FILE*stream,constchar*format,[argument...]);

FILE *stream:文件指针

char *format:格式字符串

[argument...]:输入列表

格式字符说明

常用基本参数对照:

%d:读入一个十进制整数.

%i :读入十进制,八进制,十六进制整数,与%d类似,但是在编译时通过数据前置或后置来区分进制,如加入“0x”则是十六进制,加入“0”则为八进制。例如串“031”使用%d时会被算作31,但是使用%i时会算作25.-fscanf解析文件

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

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

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

%o': 读入八进制整数.

%s : 读入一个字符串,遇空字符‘\0'结束。

%c : 读入一个字符。无法读入空值。空格可以被读入。

附加格式说明字符表修饰符说明

L/l 长度修饰符 输入"长"数据

h 长度修饰符 输入"短"数据

示例说明

如果要求从标准输入中输入一串字符串和一个整型数,那么参数“%s%d”表示什么呢?默认情况下,在终端上(这里假设程序为控制台应用程序)输入第一个参数的值的时候敲下回车,则在第二行输入的为第二个参数值,采用这种输入方法那么格式字符的形式就无关紧要了。[1] -fscanf解析文件

这里要特殊说明的是如果参数在同一行给出,那么格式字符的参数与终端的输入会有什么关系。举个例子:如果格式字符为“%s+%d”,那么参数的输入就应该为 string + integer。

程序例

例一

#include stdlib.h

#include stdio.h

int main(void)

{

int i;

printf("Input an integer:");

/*从标准输入中读取一个整数*/

if(fscanf(stdin, "%d",i))

printf("The integer read was:%d\n", i);

else

{

fprintf(stderr, "Error reading an integer from stdin.\n");

exit(1);

}

return 0;

}

返回EOF如果读取到文件结尾。

例二

附:MSDN中例子

#include stdio.h

FILE *stream;

int main(void)

{

long l;

float fp;

char s[81];

char c;

stream = fopen("fscanf.out", "w+");

if(stream==NULL)

printf("The file fscanf.out was not opened\n");

else

{

fprintf(stream,"%s%ld%f%c","a-string", 65000,3.14159, 'x');

/*将指针设置至文件开头*/

fseek(stream,0L,SEEK_SET);

/*从文件中读取数据*/

fscanf(stream,"%s",s);

fscanf(stream,"%ld",l);

fscanf(stream,"%f",fp);

fscanf(stream,"%c",c);

/*输出读取的数据*/

printf("%s\n",s);

printf("%ld\n",l);

printf("%f\n",fp);

printf("%c\n",c);

fclose(stream);

}

return 0;

}//这样会有意外输出

c++中fscanf如何实现循环读取文件中的每一行

可以使用fgets函数来实现。1 函数名:fgets2 声明形式:char *fgets(char *buf, int bufsize, FILE *stream);3 头文件:stdio.h4 功能及参数说明:从stream中读取一行数据存到buf中。如果数据长度小于bufsize,那么读入整行数据,并将换行符转换为字符串结束符\0。 如果数据长度超过bufsize,那么只读入bufsize大小的数据,并在结尾添加\0。5 返回值:成功,则返回第一个参数buf;在读字符时遇到end-of-file,则eof指示器被设置,如果还没读入任何字符就遇到这种情况,则buf保持原来的内容,返回NULL;如果发生读入错误,error指示器被设置,返回NULL,buf的值可能被改变。-fscanf解析文件