zoukankan      html  css  js  c++  java
  • C语言以字符形式读写文件

    一、字符读取函数 fgetc

    (一)、函数介绍

    fgetc 是 file get char 的缩写,意思是从指定的文件中读取一个字符。函数原型为:

    int fgetc(FILE* fp)
    

    fp 为文件指针。fgetc() 读取成功时返回读取到的字符,读取到文件末尾或读取失败时返回 EOF

    在文件内部有一个位置指针,用来指向当前读写到的位置,也就是读写到第几个字节。在打开文件时,该指针总是指向文件的第一个字节。使用fgetc函数后,该指针会向后移动一个字节,可以连续多次使用fgetc 读取多个字符。

    (二)、使用 fgetc 读取文件实例

    文件 test.txt 中有以下内容:

    I am Test.txt!
    我是被读取的文件。
    test。。。
    

    现在使用 fgetc函数将文件中的内容读取出来,程序如下:

    // c 语言以字符形式读取文件(ANSI编码)
    #include <stdio.h>
    int main()
    {
    	FILE* fp;
    	char ch;
    	fp = fopen("./test.txt", "r");
    	if (NULL != fp)
    	{
    		while (EOF != (ch=fgetc(fp)) )
    		{
    			putchar(ch);
    		}
    		printf("
    ");
    		return 1;
    	}
    
    	return 0;
    }
    
    

    程序运行结果如下图所示:

    二、字符写入函数 fputc

    (一)、函数介绍

    ​ fputc 是 file output char 的缩写,意思是向指定的文件中写入一个字符。函数原型为:

    int fputc(int ch, FILE* fp);
    

    ch 为要写入的字符,fp 为文件指针。 fputc() 写入成功时返回写入的字符,失败时返回 EOF,返回值为 int 也是为了容纳这个负数。

    写入文件时需要注意一下两点:

    • 被写入的文件可以用写,读写,追加方式打开,用写或者读写方式打开一个已存在的文件时将清除原有文件的内容,并将写入的字符放在文件的开头。如需保留原有文件的内容,并把写入的字符放在文件的结尾,就必须使用追加的方式打开。不管以何种方式打开,被写入的文件若不存在时则创建该文件。
    • 每写入一个字符,文件内部位置指针向后移动一个字节。

    (二)、使用 fputc 写入文件实例

    下面的程序实现创建文件 fputctest.txt ,然后从键盘获取输入字符并使用 fputc 函数将输入的字符写入文件中。最后再使用 fgetc 将写入文件中的内容读取出来。

    #include <stdio.h>
    
    int main()
    {
    	FILE* fp;
    	char ch;
    	fp = fopen("./fputctest.txt", "wt+");  //以读写方式打开文件,文件不存在则创建
    	if (NULL == fp)
    	{
    		printf("open file failed!
    ");
    		return 1;
    	}
    	// 每次从键盘读取一个字符写入文件
    	printf("开始写入文件:
    ");
    	while ((ch =getchar()) != '
    ')
    	{
    		fputc(ch, fp);
    	}
    
    	rewind(fp);  // 将文件指针重新指向文件头
    	printf("
    开始读取文件:
    ");
    	if (NULL != fp)
    	{
    		while (EOF != (ch = fgetc(fp)))
    		{
    			putchar(ch);
    		}
    		printf("
    ");
    		return 1;
    	}
    
    	fclose(fp);
    	return 0;
    }
    

    程序运行结果如下:

  • 相关阅读:
    kettle常见问题解决
    kettle 数据库连接中断重置
    笔记本wifi共享给手机 连接连笔记本wifi
    java.sql.SQLException: Io 异常: Connection reset
    ORA-01013:用户请求取消当前的操作
    dubbo 解决Multicast java.net.SocketException: No such device
    linux设置系统日期时间
    dubbo Linux 解决:nc: command not found
    DUBBO本地搭建及小案例
    使用maven编译dubbo,导入eclipse(其他maven开源项目编译类似)
  • 原文地址:https://www.cnblogs.com/ay-a/p/9484564.html
Copyright © 2011-2022 走看看