前言:
眼前看官们对“c语言文件怎么创建”可能比较注重,我们都需要剖析一些“c语言文件怎么创建”的相关文章。那么小编也在网络上网罗了一些对于“c语言文件怎么创建””的相关内容,希望看官们能喜欢,姐妹们一起来了解一下吧!程序运行时,通常我们使用变量来存储数据,但在程序退出后数据丢失。文件就可以用于存储数据。文件处理包括打开、关闭、读取和写入文件。
打开文件
语法:
FILE *fopen( const char * filename, const char * mode );
解释:
读,是从文件中读,从文件中读(输入)到内存中;
写,是写到文件中,从内存中写(输出)到文件中;
读,从文件中读,所以文件一定得存在,如果文件不存在,则报错;
写,写到文件中,所以文件可以不存在,如果文件不存在,则新建;
读,read,所以读简写就是r;
写,write,所以写简写就是w;
追加,append,所以追加方式就是a
mode参数
说明
打开文件不存在
r
以读取模式打开文本文件
出错
w
以写入模式打开文本文件
新建一个文件
a
以追加模式打开文本文件
新建一个文件
r+
以读写模式打开文本文件
出错
w+
以读写模式打开文本文件
新建一个文件
a+
以读写模式打开文本文件
新建一个文件
rb
以读取模式打开二进制文件
出错
wb
在写入模式下打开二进制文件
新建一个文件
ab
以追加模式打开二进制文件
新建一个文件
rb+
以读写模式打开二进制文件
出错
wb+
以读写模式打开二进制文件
新建一个文件
ab+
以读写模式打开二进制文件
新建一个文件
示例:
FILE *fp = NULL;fp = fopen("E:/c/test.txt", "w");关闭文件
fclose()函数用于关闭文件
语法:
int fclose(FILE *fp);
示例:
#include <stdio.h>int main() { // 打开文件 FILE *fp = NULL; fp = fopen("E:/c/test.txt", "w"); // 关闭文件 fclose(fp); return 0;}输入输出文件
函数名
描述
使用场景
fgetc
字符输入
所有输入流
fputc
字符输出
所有输出流
fgets
字符串输入
所有输入流
fputs
字符串输出
所有输出流
fscanf
格式化输入
所有输入流
fprintf
格式化输出
所有输出流
fread
二进制输入
文件
fwrite
二进制输出
文件
fgetc函数
fgetc 是 file get char 的意思,从指定的文件中读取一个字符
语法:
int fgetc(FILE * fp);
解释:
fp为文件指针。fgetc() 读取成功时返回读取到的字符,读取到文件末尾或读取失败时返回EOF
EOF 是 end of file 的缩写,表示文件末尾,是在 stdio.h 中定义的宏,它的值是一个负数,往往是 -1。
EOF 不绝对是 -1,也可以是其他负数,这要看编译器的实现。
示例:
#include <stdio.h>int main() { // 1.打开文件 FILE *fp = NULL; // test.txt内容为hello,world,只读方式打开 fp = fopen("E:/c/test.txt", "r"); // 如果文件不存在,给出提示并退出 if(fp == NULL) { puts("Fail to open file!"); return 0; } // 2.读文件 int ch = 0; // 每次读取一个字节,直到读取完毕 // 当文件内容访问完之后,返回EOF while ((ch = fgetc(fp)) != EOF) { putchar(ch); } // 输出换行符 putchar('\n'); // 3.关闭文件 fclose(fp); fp = NULL; return 0;}fputc函数
fputc 是 file output char 的意思。向指定的文件中写入一个字符。
语法:
int fputc(int ch, FILE *fp);
解释:
ch 为要写入的字符,fp 为文件指针。
fputc() 写入成功时返回写入的字符,失败时返回 EOF,返回值类型为 int 也是为了容纳这个负数。
示例:
#include <stdio.h>int main() { // 1.打开文件 FILE *fp = NULL; char ch; // test.txt文件不存在 fp = fopen("E:/c/test.txt", "w"); // 2. 从键盘输入字符,写到文件 printf("Input a string:\n"); while ((ch = (char)getchar()) != '\n') { fputc(ch, fp); } // 3.关闭文件 fclose(fp); fp = NULL; return 0;}
程序每次从键盘读取一个字符并写入文件,直到按下回车键,while 条件不成立,结束读取。
1 被写入的文件可以用写、读写、追加方式打开,用写或读写方式打开一个已存在的文件时将清除原有的文件内容,并将写入的字符放在文件开头。如需保留原有文件内容,并把写入的字符放在文件末尾,就必须以追加方式打开文件。不管以何种方式打开,被写入的文件若不存在时则创建该文件。
2 每写入一个字符,文件内部位置指针向后移动一个字节。
fputs函数
fputs()函数将一行字符串写入文件,它将字符串输出到流。
语法:
int fputs(const char *s, FILE *fp)
解释:
函数 fputs() 把字符串 s 写入到 fp 所指向的输出流中。如果写入成功,它返回一个非负值,如果发生错误,则返回 EOF。
示例:
#include <stdio.h>int main() { // 1.打开文件 FILE *fp = NULL; // test.txt文件不存在 fp = fopen("E:/c/test.txt", "w"); // 2.写入文件 fputs("hello,world", fp); // 3.关闭文件 fclose(fp); fp = NULL; return 0;}fgets函数
fgets()函数从文件中读取一行字符串,它从流中获取字符串。
语法:
char* fgets(char *s, int n, FILE *fp)
解释:
函数 fgets() 从 fp 所指向的输入流中读取 n - 1 个字符。它会把读取的字符串复制到缓冲区 buf,并在最后追加一个 null 字符来终止字符串。
示例:
#include <stdio.h>int main() { // 1.打开文件 FILE *fp = NULL; char ch[255]; // test.txt文件不存在 fp = fopen("E:/c/test.txt", "r"); // 2.从文件中读取 fgets(ch, 255, fp); printf("%s", ch); // 3.关闭文件 fclose(fp); fp = NULL; return 0;}fprintf函数
fprintf()函数用于将一组字符写入文件。它将格式化的输出发送到流。
语法:
int fprintf ( FILE *fp, char * format, ... );
解释:
fp 为文件指针,format 为格式控制字符串,... 表示参数列表。与 scanf() 和 printf() 相比,它们仅仅多了一个 fp 参数。
示例:
#include <stdio.h>int main() { // 1.打开文件 FILE *fp = NULL; // test.txt文件不存在 fp = fopen("E:/c/test.txt", "w"); // 2.从文件中读取 fprintf(fp, "hello,world"); // 3.关闭文件 fclose(fp); fp = NULL; return 0;}fscanf函数
fscanf()函数用于从文件中读取一组字符。它从文件读取一个单词,并在文件结尾返回EOF
语法:
int fscanf(FILE *fp, const char *format [, argument, ...])
示例:
#include <stdio.h>int main() { FILE *fp = NULL; char buff[255]; fp = fopen("E:/c/test.txt", "r"); while (fscanf(fp, "%s", buff) != EOF) { printf("%s ", buff); } fclose(fp); fp = NULL; return 0;}fwrite函数
语法:
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream)
解释:
ptr -- 这是指向要被写入的元素数组的指针。size -- 这是要被写入的每个元素的大小,以字节为单位。nmemb -- 这是元素的个数,每个元素的大小为 size 字节。stream -- 这是指向 FILE 对象的指针,该 FILE 对象指定了一个输出流。
示例:
#include<stdio.h>int main() { FILE *fp; char str[] = "hello,world"; fp = fopen("E:/c/test.txt", "wb"); fwrite(str, sizeof(str), 1, fp); fclose(fp); return (0);}
fwrite写到文件里,配套用fread从文件中读取,否则可能会读取不到准确的结果。
fread函数
从文件中读取若干字节数据到内存缓冲区中
语法:
size_t fread( void *buffer, size_t size, size_t count, FILE *stream );
解释:
void *buffer 参数 : 将文件中的二进制数据读取到该缓冲区中 ;size_t size 参数 : 读取的 基本单元 字节大小 , 单位是字节 , 一般是 buffer 缓冲的单位大小 ;如果 buffer 缓冲区是 char 数组 , 则该参数的值是 sizeof(char) ;如果 buffer 缓冲区是 int 数组 , 则该参数的值是 sizeof(int) ; size_t count 参数 : 读取的 基本单元 个数 ;FILE *stream 参数 : 文件指针 ;size_t 返回值 : 实际从文件中读取的 基本单元 个数 ; 读取的字节数是 基本单元数 * 基本单元字节大小 ;
示例:
#include<stdio.h>int main() { FILE *fp; char str[200] = {0}; fp = fopen("E:/c/test.txt", "rb"); fread(str, sizeof(char), sizeof(str), fp); printf("%s\n", str); fclose(fp); return (0);}文件位置指针函数ftell函数
ftell()函数返回指定流的当前文件指针的位置。在文件末尾移动文件指针后,我们可以使用ftell()函数获取文件的总大小。可以使用SEEK_END常量来将文件指针移动文件末尾。
语法:
long int ftell(FILE *stream)
示例:
#include<stdio.h>int main() { FILE *fp; int length; fp = fopen("E:/c/test.txt", "r"); fseek(fp, 0, SEEK_END); length = ftell(fp); fclose(fp); printf("Size of file: %d bytes", length); return (0);}rewind函数
让文件指针的位置回到文件的起始位置。
语法:
void rewind(FILE *stream)fseek函数
fseek()函数用于将文件指针设置为指定的偏移量。
语法:
int fseek(FILE *stream, long int offset, int whence)
解释:
fseek()函数中有3个常量用于whence参数的值,分别为:SEEK_SET,SEEK_CUR和SEEK_END。
文件读取结束判定ferror函数
判断是否由于发生错误而结束读取。若读取错误而结束,该函数返回一个非零值,否则返回一个零值。
feof函数
判断是否遇到文件结束而结束读取。若遇到文件结束标志而结束读取,该函数返回一个非零值,否则返回零。
if (ferror(fp)) { printf("发生错误而结束读取!");}if (!feof(fp)) { printf("没有遇到文件结束标志!");}
标签: #c语言文件怎么创建