fopen读取文件内容,fopen_s读取文件
C语言——保存读取文件
1.用文件操作函数就可以实现读取和保存。打开函数fopen,mode参数设置为“r”就可以使用fscanf函数读取文件内容。用fclose函数就可以实现保存并关闭文件。
2.对于程序来说,不管后缀名如何,文件分为两种类型:文本文件和二进制文件。
c语言里有一系列文件操作函数。区分文本和二进制文件,需要在打开文件时设置不同的控制符mode的变量即可。
3.fopen的函数原型:file
*
fopen(const
char
*
path,const
char
*
mode);
fopen函数的第一个参数是文件路径,第二个参数是打开方式,有以下几种方式:
r
以只读方式打开文件,该文件必须存在。
r+
以可读写方式打开文件,该文件必须存在。
rb+
读写打开一个二进制文件,允许读数据。
rw+
读写打开一个文本文件,允许读和写。
w
打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
w+
打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
a
以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(eof符保留)
a+
以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。
(原来的eof符不保留)
wb
只写打开或新建一个二进制文件;只允许写数据。
wb+
读写打开或建立一个二进制文件,允许读和写。
wt+
读写打开或着建立一个文本文件;允许读写。
at+
读写打开一个文本文件,允许读或在文本末追加数据。
ab+
读写打开一个二进制文件,允许读或在文件末追加数据。
上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b
字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件。
C语言读取文件内容,按行读
1通过fopen函数打开文本,例如file
*fp=fopen("in.txt","r");//返回一个file类型的句柄
2然后就可以通过fcanf()函数对txt文本进行读取
3操作完文本之后用fclose()函数
关闭已经打开的文件。
#include
int main()
{
int data;
file *fp=fopen("in.txt","r");
if(!fp)
{
printf("can't open file\n");
return -1;
}
while(!feof(fp))
{
fscanf(fp,"%d",data);
printf("%4d",data);
}
printf("\n");
fclose(fp);
return 0;
}
c++中fopen函数读文件怎么用文件数据?
本文分别简单讲述了如何利用C和C++库函数对文件的读写,涵盖了常用的文件操作函数。网上关于C/C++文件操作的介绍的博客很多,所以本文也大同小异,也主要是做一个备忘,不有每次都百度了。但本文重点在于几个库函数的运用,而不是从文件的属性或分类开始。\x0d\x0a一、C文件操作:\x0d\x0a C语言中,文件的操作都是通过一个FILE类型的文件指针进行,也就是说只有通过文件指针,才能调用相应的文件。FILE是一个由系统定义的结构体(定义在stdio.h中),可以存放文件的相关信息。\x0d\x0a文件的打开(fopen函数)\x0d\x0a 文件的操作过程一般为:打开 = 读/写 = 关闭。\x0d\x0afopen函数的原型如下:\x0d\x0a FILE* fopen(const char* filename, const char* mode); \x0d\x0a函数调用就比较简单了:\x0d\x0a FILE* fp;\x0d\x0a fp = fopen("file1.txt", "r");\x0d\x0a如果打开成功,返回file1.txt文件的指针,如果打开失败,返回一个NULL指针,所以调用fopen()后我们需要检查fp的值才进行下一步操作。fopen()的第一个参数为文件名,第二个参数为文件打开方式,含义如下表:\x0d\x0a说明: 1. 使用"r"时,如果文件不存在,则出错。\x0d\x0a 2. 使用"w"时,如果没有文件,则创建一个新文件。\x0d\x0a 3. 使用"a"时,如果希望向文件尾添加数据,则该文件必须存在,否则出错。\x0d\x0a 4. "r+","w+","a+"都是可以输入和输出数据,但必须遵守上述3点\x0d\x0a 5. 操作二进制文件时,加上"b"字符,且二进制文件对换行符不会进行转换,而文本文件会将换行符转换为回车和换行两个字符。\x0d\x0a文件的关闭(fclose函数)\x0d\x0a 在使用完一个文件后,若不关闭则会造成系统资源泄漏。使用fclose()关闭文件即可,原型为 int fclose(FILE* fp)。使用:fclose(fp); flose()返回0时为顺利关闭文件,否则返回EOF(-1)。\x0d\x0a文件的读写\x0d\x0a 1) fputc(), fgetc()分别为从文件流中写和读一个字符,原型分别如下:\x0d\x0a 写:int fputc(int c, FILE* fp); 读:int fgetc(FILE* fp); 失败时均返回EOF\x0d\x0a 2) fputs(), fgets()分别为从文件流中写和读一个字符串,原型分别如下:\x0d\x0a 写:int fputs(const char* str, FILE* fp); 例如: fputs("I love this game!", fp);\x0d\x0a 读:char* fgets(char* str, int n, FILE* fp); 从流中读取n-1个字符或读完一行,参数str用于接收读取的字符串。注意当读取一行时,不包括行尾的'\n'字符。\x0d\x0a 3) fseek() 一般用于二进制模式打开的文件中,功能是定位到流中指定的位置。原型如下:\x0d\x0a int fseek(FILE* fp, lont offset, int whence); 参数offset是移动的字符数,whence是移动的基准,取值是:\x0d\x0a SEEK_SET 0 //文件开头 \x0d\x0a SEEK_CUR 1 //当前读写的位置 \x0d\x0a SEEK_END 2 //文件尾部 \x0d\x0a 4) fprintf(),fscanf()是将数据按格式输出输入到文件流中,用法类似printf()和scanf()。原型分别如下:\x0d\x0a int fprintf(FILE* fp, const char* format, ...); 它与printf()不同的就是将数据写到了文件流中,而不是控制台罢了。\x0d\x0a int fscanf(FILE* fp, cosnt char* format, ...); 从文件流中按格式读取,与scanf()不同的就是数据是从文件流中读取而已。\x0d\x0a 例如: fprintf(fp, "count=%d", 5); fscanf(fp, "%d", x);\x0d\x0a 5) feof()是检测是否已到文件尾,是返回真,否则返回0,原型是 int feof(FILE* fp);\x0d\x0a 6) rewind() 则是把当前的读写位置回到文件开始,相当于 fseek(fp, 0L, SEEK_SET); 原型: void rewind(FILE* fp);\x0d\x0a 7) remove() 删除文件,原型: int remove(const char* filename); 参数为要删除的文件名,成功则返回0;\x0d\x0a 8) fread(), fwrite() 它们相当于可将一块的数据读出或写入,相当的方便。原型如下:\x0d\x0a size_t fread(void* ptr, size_t size, size_t n, FILE* fp); 从流中读指定个数的字符,size是每块的字节娄,n则是读取的块数。\x0d\x0a size_t fwrite(const void* ptr, size_t size, size_t n, FILE* fp); 类似的是向文件流中写入n块size字节数的数据。可以看到数据指针为void*型,即可以使用任何类型的指针来替换。例如:\x0d\x0a现在一个结构体: struct student_t{char name[16]; int id; int age;}; 创建三个学生的数据并赋值:struct student_t stu[3];\x0d\x0a这时,当我们找开文件后(一般是进制模式),可以调用fwrite()将三个学生的数据都写入到文件中,两种方式:\x0d\x0a for(int i = 0; i
回答于?2022-11-16
C语言 文件操作,要读取一个txt文件内容
在C语言中,文件操作都是由库函数来完成的。
要读取一个txt文件,首先要使用文件打开函数fopen()。
fopen函数用来打开一个文件,其调用的一般形式为: 文件指针名=fopen(文件名,使用文件方式) 其中,“文件指针名”必须是被说明为FILE 类型的指针变量,“文件名”是被打开文件的文件名。 “使用文件方式”是指文件的类型和操作要求。“文件名”是字符串常量或字符串数组。
其次,使用文件读写函数读取文件。
在C语言中提供了多种文件读写的函数:
·字符读写函数 :fgetc和fputc
·字符串读写函数:fgets和fputs
·数据块读写函数:freed和fwrite
·格式化读写函数:fscanf和fprinf
最后,在文件读取结束要使用文件关闭函数fclose()关闭文件。
下面以格式化读写函数fscanf和fprintf为例,实现对文件A.txt(各项信息以空格分割)的读取,并将它的信息以新的格式(用制表符分割各项信息)写入B.txt,实现对A.txt的处理。
C语言源程序如下所示:
#include stdio.h
#include stdlib.h
#include assert.h
typedef struct student{
char name[32];
int no;
char sex[16];
float score;
} stu;
int main(int argc, char* argv[])
{
//打开文件
FILE * r=fopen("A.txt","r");
assert(r!=NULL);
FILE * w=fopen("B.txt","w");
assert(w!=NULL);
//读写文件
stu a[128];
int i=0;
while(fscanf(r,"%s%d%s%f",a[i].name,a[i].no,a[i].sex,a[i].score)!=EOF)
{
printf("%s\t%d\t%s\t%g\n",a[i].name,a[i].no,a[i].sex,a[i].score);//输出到显示器屏幕
fprintf(w,"%s\t%d\t%s\t%g\n",a[i].name,a[i].no,a[i].sex,a[i].score);//输出到文件B.txt
i++;
}
//关闭文件
fclose(r);
fclose(w);
system("pause");
return 0;
}
C语言怎样将文本文件中的内容读取打印
可以参考下面的代码:
#includestdio.h
#define F_PATH "d:\\myfile\\file.dat"
char c;
int main(){
FILE*fp=NULL;//需要注意
fp=fopen(F_PATH,"r");
if(NULL==fp) return -1;//要返回错误代码
while(fscanf(fp,"%c",c)!=EOF) printf("%c",c); //从文本中读入并在控制台打印出来
fclose(fp);
fp=NULL;//需要指向空,否则会指向原打开文件地址?
return 0;
}
扩展资料:
fopen函数是打开一个文件,其调用的一般形式为:
文件指针名=fopen(文件名,使用文件方式);
“文件指针名”必须是被声明为FILE 类型的指针变量;
“文件名”是被打开文件的文件名;
“使用文件方式”是指文件的类型和操作要求;
“文件名”是C风格字符串。
使用文件的方式共有12种,部分的意义如下:
"r" = "rt"
打开一个文本文件,文件必须存在,只允许读
"rb"
打开一个二进制文件,文件必须存在,只允许读
参考资料来源:百度百科-c语言fopen函数