C语⾔实现读取⽂件的简单代码⼀、写⽂件
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
int main()
{
printf("File :%s\n", __FILE__);
printf("Date :%s\n", __DATE__);
printf("Time :%s\n", __TIME__);
printf("Line :%d\n", __LINE__);
/
/printf("ANSI :%d\n", __STDC__);
char msg[1000];
FILE *stream;
int i = 0;
if ((stream = fopen("D:/CppWorkspace/Class_2/", "w")) == NULL)
{
perror("fail to write");
exit(1);
}fgets和fgetc的区别
scanf("%s", msg);    //控制台键⼊内容到⽂件中
while (msg[i])
{
fputc(msg[i], stream);
i++;
}
return 0;
}
运⾏结果:
⼆、读⽂件
1、打开⽂件 fopen("需要打开的路径")
2、然后使⽤ fgets 函数读取⾏
#include <string.h>
#include <errno.h>
#define MAX_LINE 1024
int main()
{
char buf[MAX_LINE];  /*缓冲区*/
FILE *fp;            /*⽂件指针*/
int len;            /*⾏字符个数*/
if ((fp = fopen("D:/CppWorkspace/Class_2/", "r")) == NULL) {
perror("fail to read");
exit(1);
}
while (fgets(buf, MAX_LINE, fp) != NULL)
{
len = strlen(buf);
buf[len - 1] = '\0';  /*去掉换⾏符*/
printf("%s %d \n", buf, len - 1);
}
return 0;
}
运⾏结果:
三、按‘⾏’读取代码:
1、 使⽤fgets函数,从⽂件中读取多⾏:
#include "stdlib.h"
#include "stdio.h"
int main(int argc, char *argv[])
{
FILE *in= fopen("D:/in.java", "r");
char buf[1024];
while (fgets(buf, sizeof(buf), in) != NULL)
{
printf("%s", buf);
}
fclose(text);
return 0;
}
2、使⽤fputs函数,从⼀个⽂件逐⾏读取 ,写⼊到另⼀个⽂件:
int main(int argc, char *argv[])
{
FILE *in= fopen("D:/In.java", "r");
FILE *out = fopen("D:/Out.java", "w");
char buf[1024];
while (fgets(buf, sizeof(buf), in) != NULL)
{
fputs(buf, out);
}
fclose(in);
fclose(out);
return 0;
}
四、fopen & fclose
1、⽂件指针名 = fopen( ⽂件名, 使⽤⽂件⽅式 );
rt只读打开⼀个⽂本⽂件,只允许读数据
wt只写打开或建⽴⼀个⽂本⽂件,只允许写数据
at追加打开⼀个⽂本⽂件,并在⽂件末尾写数据
rb只读打开⼀个⼆进制⽂件,只允许读数据
wb只写打开或建⽴⼀个⼆进制⽂件,只允许写数据
ab追加打开⼀个⼆进制⽂件,并在⽂件末尾写数据
rt+读写打开⼀个⽂本⽂件,允许读和写
wt+读写打开或建⽴⼀个⽂本⽂件,允许读写
at+读写打开⼀个⽂本⽂件,允许读,或在⽂件末追加数据
rb+读写打开⼀个⼆进制⽂件,允许读和写
wb+读写打开或建⽴⼀个⼆进制⽂件,允许读和写
ab+读写打开⼀个⼆进制⽂件,允许读,或在⽂件末追加数据
(1)⽂件使⽤⽅式由r、w、a、t、b 和 + 六个字符拼成,各字符的含义是: r(read):读
w(write):写
a(append):追加
t(text):⽂本⽂件,可省略不写
b(banary):⼆进制⽂件
+:读和写
(2)凡⽤“r”打开⼀个⽂件时,该⽂件必须已经存在,且只能从该⽂件读出。
(3)⽤“w”打开的⽂件只能向该⽂件写⼊。若打开的⽂件不存在,则以指定的⽂件名建⽴该⽂件,若打开的⽂件已经存在,则将该⽂件删去,重建⼀个新⽂件。
(4) 若要向⼀个已存在的⽂件追加新的信息,只能⽤“a”⽅式打开⽂件。但此时该⽂件必须是存在的,否则将会出错。
(5)在打开⼀个⽂件时,如果出错,fopen将返回⼀个空指针值NULL。在程序中可以⽤这⼀信息来判别是否完成打开⽂件的⼯作,并作相应的处理。因此常⽤以下程序段打开⽂件:
FILE*fWrite, *fRead;
//第⼀种打开⽂件的⽅法
if (!(fWrite = fopen("", "w")))
{
printf("file was not opened! ");
exit(1);
}
//第⼆种打开⽂件的⽅法
fRead = fopen("", "r");
if (fRead == NULL)
{
printf("file was not opened! ");
exit(1);
}
(6)把⼀个⽂本⽂件读⼊内存时,要将ASCII码转换成⼆进制码,⽽把⽂件以⽂本⽅式写⼊磁盘时,也要把⼆进制码转换成ASCII码,因此⽂本⽂件的读写要花费较多的转换时间。对⼆进制⽂件的读写不存在这种转换。
(7)标准输⼊⽂件(键盘),标准输出⽂件(显⽰器),标准出错输出(出错信息)是由系统打开的,可直接使⽤。
2、⽂件关闭函数(fclose函数)
⽂件⼀旦使⽤完毕,应⽤关闭⽂件函数把⽂件关闭,以避免⽂件的数据丢失等错误。
fclose函数调⽤的⼀般形式是:
fclose(⽂件指针);
例如:
fclose(fp);
正常完成关闭⽂件操作时,fclose函数返回值为0。如返回⾮零值则表⽰有错误发⽣。
五、读和写函数
1、字符读写函数 fgetc / fputc
int fputc(
int c,      //字符
FILE *stream //⽂件指针
)
;
int fgetc(
FILE *stream //⽂件指针
);
⽰例代码:
#include <stdio.h>
void function()
{
//打开⽂件
FILE *fWrite, *fRead;
if (!(fWrite = fopen("./", "w")))
{
printf("file was not opened! ");
exit(1);
}
fRead = fopen("./", "r");
if (fRead == NULL)
{
printf("file was not opened! ");
exit(1);
}
/*************** fputc *****************/
/
/写⼊单个字符
fputc('a', fWrite); //写⼊字符
//循环写⼊字符
char arr[128] = "你好,世界!";
char *p = arr;
while ((*p != '\0') && fputc(*(p++), fWrite) != EOF); fclose(fWrite); //⼀定要记得关闭⽂件
/*************** fgetc *****************/
//单个读取字符
char ch = fgetc(fRead);
putchar(ch);
rewind(fRead); //将⽂件内部指针移回⽂件开头
while (!feof(fRead)) //feof函数
{
printf("%c", fgetc(fRead));
}
fclose(fRead);
}
int main() {
function();
return 0;
}
运⾏结果:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。