
下面介绍一个例子, 运行后产后一个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
。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)