C语言fscanf问题

C语言fscanf问题,第1张

下面介绍一个例子, 运行后产后一个testdat的文件

例11:

#include<stdioh>

main()

{

char s="That's good news"); /定义字符串指针并初始化/

int i=617; /定义整型变量并初始化/

FILE fp; /定义文件指针/

fp=fopne("testdat", "w"); /建立一个文字文件只写/

fputs("Your score of TOEFLis", fp);/向所建文件写入一串字符/

fputc(':', fp); /向所建文件写冒号:/

fprintf(fp, "%d\n", i); /向所建文件写一整型数/

fprintf(fp, "%s", s); /向所建文件写一字符串/

fclose(fp); /关闭文件/

}

用DOS的TYPE命令显示TESTDAT的内容如下所示:

屏幕显示

Your score of TOEFL is: 617

That's good news

2 文件的顺序读 *** 作函数

fscanf()、fgets()和fgetc()函数

函数fscanf()、fgets()和fgetc()均为文件的顺序读 *** 作函数, 其调用格式

如下:

int fscanf(FILE stream, char format, <address-list>);

char fgets(char string, int n, FILE steam);

int fgetc(FILE steam);

fscanf()函数的用法与scanf()函数相似, 只是它是从文件中读到信息。

fscanf()函数的返回值为EOF(即-1), 表明读错误, 否则读数据成功。fgets()函

数从文件中读取至多n-1个字符(n用来指定字符数), 并把它们放入string指向的

字符串中, 在读入之后自动向字符串未尾加一个空字符, 读成功返回string指针,

失败返回一个空指针。fgetc()函数返回文件当前位置的一个字符, 读错误时返

回EOF。

下面程序读取例11产生的testdat文件, 并将读出的结果显示在屏幕上。

例12

#include<stdioh>

main()

{

char s, m[20];

int i;

FILE fp;

fp=fopen("testdat", "r"); /打开文字文件只读/

fgets(s, 24, fp); /从文件中读取23个字符/

printf("%s", s); /输出所读的字符串/

fscanf(fp, "%d", &i); /读取整型数/

printf("%d", i); /输出所读整型数/

putchar(fgetc(fp)); /读取一个字符同时输出/

fgets(m, 17, fp); /读取16个字符/

puts(m); /输出所读字符串/

fclose(fp); /关闭文件/

getch(); /等待任一键/

}

运行后屏幕显示:

Your score of TOEFL is: 617

That's good news

如果将上例中fscanf(fp, "%d", &i)改为fscanf(fp, "%s", m), 再将其后

的输出语句改为printf("%s", m), 则可得出同样的结果。由此可见Turbo C2 0

中只要是读文字文件, 则不论是字符还是数字都将按其ASCII值处理。 另外还要

说明的一点就是fscanf()函数读到空白符时, 便自动结束, 在使用时要特别注意

言代码,所以fprintf() 及fscanf()等函数都能用。

另外,

(1)Linux上的输出命令:printf

printf 命令,格式化输出,是echo 命令的增强它是C 语言printf()库函数的一个有限的变形,

并且在语法上有些不同

printf format-string parameter

这是Bash 的内建版本,与/bin/printf 或/usr/bin/printf 命令不同想更深入的了解,请

察看printf(系统命令)的man 页

(2)Linux Shell 有一版本为CShell,语法与C有很大相似之处。

fscanf(fp1,"%d\n",

&a);

把fp1改成fp2,下面的也是。另外我给重写了一个,你可以参考:

#include<stdioh>

//#include

<timeh>

int

main()

{

int

data[5]={1932,4320,2831,3422,1344};

int

buff[5]={};

int

i;

//

a,

b,

c,

d,

e

;

FILE

fp1,

fp2;

fp1

=

fopen("systemtxt",

"w"

);

//设置输入输出文件指针

for(i=0;

i<5;

i++

)

{

fprintf(fp1,"%d\n",

data[i]);

}

fclose(fp1);

fp2

=

fopen("systemtxt",

"r"

);

for(i=0;

i<5;

i++

)

{

fscanf(fp2,"%d\n",

&buff[i]);

}

fclose(fp2);

for(i=0;

i<5;

i++

)

printf("%d\n",

buff[i]);

return

0;

}

fread:是读取数据

fwrite:是写入数据

1函数功能

用来读写一个数据块。

2一般调用形式

fread(buffer,size,count,fp);

fwrite(buffer,size,count,fp);

3说明

(1)buffer:是一个指针,对fread来说,它是读入数据的存放地址。对fwrite来说,是要输出数据的地址。

(2)size:要读写的字节数;

(3)count:要进行读写多少个size字节的数据项;

(4)fp:文件型指针。

注意:1

完成次写 *** (fwrite())作后必须关闭流(fclose());

2

完成一次读 *** 作(fread())后,如果没有关闭流(fclose()),则指针(file

fp)自动向后移动前一次读写的长度,不关闭流继续下一次读 *** 作则接着上次的输出继续输出;

3

fprintf()

按格式输入到流,其原型是int

fprintf(file

stream,

const

char

format[,

argument,

]);其用法和printf()相同,不过不是写到控制台,而是写到流罢了。注意的是返回值为此次 *** 作写入到文件的字节数。如int

c

=

fprintf(fp,

"%s

%s

%d

%f",

str1,str2,

a,

b)

;str1:10字节;str2:

10字节;a:2字节;b:8字节,c为33,因为写入时不同的数据间自动加入一个空格。

4fscanf

scanf

相似

:当能正常读入数据时,

fscanf

返回读入数据的个数,否则返回

eof

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/12459956.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-23
下一篇2023-05-23

发表评论

登录后才能评论

评论列表(0条)

    保存