本文共 2062 字,大约阅读时间需要 6 分钟。
char *fgets(char *string,int n,FILE *stream);
char *gets(char *s);
int fprintf(FILE *stream,char *format,variable-list);
int fputs(char *string,FILE *stream);
int fscanf(FILE *stream,char *format,variable-list);
其中fgets()函数将把由流指针指定的文件中n-1个字符,读到由指针stream指向的字符数组中去,例如:
fgets(buffer,9,fp);
将把fp指向的文件中的8个字符读到buffer内存区,buffer可以是定义的字符数组,也可以是动态分配的内存区。
注意,fgets()函数读到'\n'就停止,而不管是否达到数目要求。同时在读取字符串的最后加上'\0'。
fgets()函数执行完以后,返回一个指向该串的指针。如果读到文件尾或出错,则均返回一个空指针NULL,所以长用feof()函数来测定是否到了文件尾或者是ferror()函数来测试是否出错,例如下面的程序用fgets()函数读test.txt文件中的第一行并显示出来:
#include "stdio.h"
main()
{
FILE *fp;
char str[128];
if((fp=fopen("test.txt","r"))==NULL)
{
printf("cannot open file\n");
exit(1);
}
while(!feof(fp))
{
if(fgets(str,128,fp)!=NULL) printf("%s",str);
}
fclose(fp);
}
gets()函数执行时,只要未遇到换行符或文件结束标志,将一直读下去。因此读到什么时候为止,需要用户进行控制,否则可能造成存储区的溢出。
fputs()函数想指定文件写入一个由string指向的字符串,'\0'不写入文件。
fprintf()和fscanf()同printf()和scanf()函数类似,不同之处就是printf()函数是想显示器输出,fprintf()则是向流指针指向的文件输出;fscanf()是从文件输入。
下面程序是向文件test.dat里输入一些字符:
#include<stdio.h>
main()
{
char *s="That's good news";
int i=617;
FILE *fp;
fp=fopne("test.dat", "w");
fputs("Your score of TOEFLis",fp);
fputc(':', fp);
fprintf(fp, "%d\n", i);
fprintf(fp, "%s", s);
fclose(fp);
}
用DOS的TYPE命令显示TEST.DAT的内容如下所示:
屏幕显示
Your score of TOEFL is: 617
That's good news
下面的程序是把上面的文件test.dat里的内容在屏幕上显示出来:
#include<stdio.h>
main()
{
char *s, m[20];
int i;
FILE *fp;
fp=fopen("test.dat", "r");
fgets(s, 24, fp);
printf("%s", s);
fscanf(fp, "%d", &i);
printf("%d", i);
putchar(fgetc(fp));
fgets(m, 17, fp);
puts(m);
fclose(fp);
getch();
}
运行后屏幕显示:
Your score of TOEFL is: 617
That's good news。
示例代码如下:
#define _CRT_SECURE_NO_WARNINGS #include#include #include void main21_fputs(){ int i = 0; FILE *fp = NULL; //char *filename = "c:\\1.txt"; char *filename2 = "c:/22.txt"; // 统一的用45度 char a[27]= "abcdefghijklmn"; //fp = fopen(filename2, "r+"); //读写的方式 打开文件 如果文件不存在 则报错 fp = fopen(filename2, "w+"); //读写的方式 打开文件 如果文件不存在 则报错 if (fp == NULL) { printf("func fopen() err:%d \n"); return; } printf("打开成功\n"); /* for (i=0; i
转载地址:http://jqzmi.baihongyu.com/