C语言实现读取文件的简单代码「建议收藏」

C语言实现读取文件的简单代码「建议收藏」一、写文件#include<stdio.h>#include<stdlib.h>#include<string.h>#include<errno.h>intmain(){ printf(“File:%s\n”,__FILE__); printf(“Date:%s\n”,__DATE__); printf(“…

大家好,又见面了,我是你们的朋友全栈君。

一、写文件

#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/Class4/abc.txt", "w")) == NULL)
	{
		perror("fail to write");
		exit(1);
	}
	scanf("%s", msg);    //控制台键入内容到文件中
	while (msg[i])
	{
		fputc(msg[i], stream);
		i++;
	}
	return 0;
}

运行结果:

C语言实现读取文件的简单代码「建议收藏」

二、读文件

1、打开文件 fopen(“需要打开的路径”)

2、然后使用 fgets 函数读取行

#include <stdio.h>
#include <stdlib.h>
#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/Class4/abc.txt", "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;
}

运行结果:

C语言实现读取文件的简单代码「建议收藏」

三、按‘行’读取代码:

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函数,从一个文件逐行读取 ,写入到另一个文件:

#include "stdlib.h"
#include "stdio.h"
 
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("test.txt", "w")))
 {
     printf("file was not opened! ");
     exit(1);
 }
 //第二种打开文件的方法
 fRead = fopen("test.txt", "r");
 if (fRead == NULL)
 {
     printf("file was not opened! ");
     exit(1);
 }

(6)把一个文本文件读入内存时,要将ASCII码转换成二进制码,而把文件以文本方式写入磁盘时,也要把二进制码转换成ASCII码,因此文本文件的读写要花费较多的转换时间。对二进制文件的读写不存在这种转换
(7)标准输入文件(键盘),标准输出文件(显示器),标准出错输出(出错信息)是由系统打开的,可直接使用。

2、文件关闭函数(fclose函数)

文件一旦使用完毕,应用关闭文件函数把文件关闭,以避免文件的数据丢失等错误。
fclose函数调用的一般形式是:
fclose(文件指针);
例如:
fclose(fp);
正常完成关闭文件操作时,fclose函数返回值为0。如返回非零值则表示有错误发生。

C语言文件指针及文件打开和关闭

五、读和写函数

1、字符读写函数 fgetc / fputc

 int fputc(
 int c,       //字符
 FILE *stream //文件指针
 );
int fgetc(
FILE *stream //文件指针
);

示例代码:

#include <stdio.h>

void function()
{
	//打开文件
	FILE *fWrite, *fRead;
	if (!(fWrite = fopen("./test.txt", "w")))
	{
		printf("file was not opened! ");
		exit(1);
	}
	fRead = fopen("./test.txt", "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;
}

运行结果:

C语言实现读取文件的简单代码「建议收藏」

  • 第一步是打开文件fopen,然后判断是否打开成功
  • 读写操作要分别用两个文件指针
  • 然后进行读写操作,同时对一个文件进行读写操作会出错,当写入操作完成之后再进行读取操作
  • feof()函数是判断文件指针是否读到文件末尾,到达文件末尾返回一真值

2、字符串读写函数 fgets / fputs

int fputs(
   const char *str,	//字符数组
   FILE *stream		//文件指针
);

char *fgets(
   char *str,		//字符数组
   int numChars,	//最多读取的字符个数
   FILE *stream		//文件指针
);

示例代码:

//写入
fputs( "Hello world\n", fWrite);
//读取
char arr[128];
while (fgets(arr, 127, fRead) != NULL)	//arr至少留一个位置给'\0'
{
	puts(arr);
}

3、格式化读写文件 fprintf / fscanf

int fprintf(
   FILE *stream,		//文件指针
   const char *format [,//字符数组
   argument ]...
);

int fscanf(
   FILE *stream,		//文件指针
   const char *format [,//字符数组
   argument ]...
);

fprintf() 失败时返回‘-1’

参考资料: C语言中fscanf函数

其中fscanf函数的返回值为:参数列表中被成功赋值的参数个数;失败时,返回‘-1’

示例:

C语言实现读取文件的简单代码「建议收藏」

示例代码:

有问题的代码?

#include <stdio.h>

void function()
{
	//打开文件
	FILE *fWrite, *fRead;
	if ((fWrite = fopen("./thisfile.txt", "w")) == NULL) {
		printf("file can not open!");
		exit(1);
	}
	//写入文件
	fprintf(fWrite, "我的学号是%d\n", 1001);
	char arr[128] = "你好,世界!";
	char arr1[128] = {0};
	fprintf(fWrite, arr);
	fclose(fWrite);
	//读取文件
	if ((fRead = fopen("./thisfile.txt", "r")) == NULL) {
		printf("file can not open!");
		exit(1);
	}
	while (!feof(fRead))
	{
		fscanf(fRead, arr1);
		puts(arr1);
	}
	fclose(fRead);
}

int main() {

	function();
	return 0;
}

4、二进制读写文件 fread / fwrite

size_t fwrite(
   const void *buffer,	//指向要写入的数据的指针
   size_t size,			//要写入项目的大小,以字节为单位
   size_t count,		//要写入的最大项目数
   FILE *stream			//指向FILE结构的指针
);

size_t fread(
   void *buffer,		//数据的存储位置
   size_t size,			//项目大小(以字节为单位)
   size_t count,		//读取的最大项目数
   FILE *stream			//指向FILE结构的指针
);

 https://zhuanlan.zhihu.com/p/98575713

C语言实现读取文件的简单代码「建议收藏」

C语言实现读取文件的简单代码「建议收藏」 

C语言实现读取文件的简单代码「建议收藏」

C语言实现读取文件的简单代码「建议收藏」

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/143774.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • spring注解@Conditional 按照一定的条件进行判断,满足条件给容器中注册bean

    spring注解@Conditional 按照一定的条件进行判断,满足条件给容器中注册beanpublicclassPerson{ privateStringname; privateintage; publicStringgetName(){ returnname; } publicvoidsetName(Stringname){ this.name=name; } publicintgetAge(){…

    2022年10月25日
  • leetcode 接雨水2_雨水口连接管

    leetcode 接雨水2_雨水口连接管题目链接给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。示例 1:输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]输出:6解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。示例 2:输入:height = [4,2,0,3,2,5]输出:9 提示:n == height.length0 <= n &lt

  • 面试必问的 JVM 类加载机制,你懂了吗?

    面试必问的 JVM 类加载机制,你懂了吗?JVM类加载机制高频面试题

  • Qt/C++ 音乐播放器源码[通俗易懂]

    Qt/C++ 音乐播放器源码[通俗易懂]Qt5音乐播放器这是本人的第一条博客,排版什么的就将就看吧~一,我还在学生,学Qt来收获很大,至少是明白了Qt这些大大小小的问题1.播放器做的很累人,网上虽有源码,但都过分的简单且不美观。2.基于上述原因我才打算重新写个玩玩,以后在写程序的时候听着自己做的播放器放的歌,那是相当的苦中带乐啊!!二,好了下面讲如何实现吧1.先上几张最终效果图:换肤:…

  • Git工具安装

    Git工具安装

  • js面试笔试–prototype详解

    js面试笔试–prototype详解对JavaScript中原型模式的理解一:什么是原型对象?有什么优点?   简单的来说,无论何时,我们创建的每一个函数都有一个prototype属性,这个属性是一个指针,指向一个对象,这个对象包含了通过调用该构造函数所创建的对象共享的属性和方法。其实我们平常的叫法就是指:prototype就是通过该构造函数创建的某个实例的原型对象,但是其实prototype是每个构造函数的属性而已,只能说…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号