c语言----文件的操作及应用(2)

本文介绍了C语言中对文件的基本操作,包括读取、写入和处理磁盘文件。示例代码展示了如何从键盘读取数据并写入文件,从文件读取字母和数字字符,复制数字字符到新文件,生成sin(x)值并筛选正数,将字符写入文件并读回数组,以二进制形式存储和修改浮点数,计算偶数平均值,排序单词,以及文件的加密和解密。此外,还探讨了feof()函数的正确使用和qsort()排序函数的应用。
摘要由CSDN通过智能技术生成

 

            先打开fp=fopen(“”,“”);

           再操作,写入fputc(ch,fp),读出ch=fgetc(fp);

          从键盘读取字符是ch=getchar();将字符显示在屏幕上是putchar(ch);

 

1、从键盘中输入一个字符串,并逐个将字符串的每个字符传送到磁盘文件11.txt中,字符串的结束标记为“#”;

       #include <stdio.h>
#include <stdlib.h>
void main()
{    char ch;
    if((fp=fopen("d:\\11.txt","w"))==NULL)
    {
        printf("can't open\n");
        exit(0);
    }
     printf("enter the data:\n");
    while((ch=getchar())!='#')
      fputc(ch,fp);
      fclose(fp);
    }

2、有一个文本文件11.txt,请编写一个程序将文件中的英文字母及数字字符显示在屏幕上;


#include <stdio.h>
#include <stdlib.h>

int main()
{
    FILE *fp;
    char ch;
    if((fp=fopen("d:\\11.txt","r"))==NULL)
    {
        printf("can't open\n");
        exit(0);
    }
    while(!feof(fp)){
        ch = fgetc(fp);
        if(ch>='A'&&ch<='Z'||ch>='a'&&ch<='z'||ch>='0'&&ch<='9')
            putchar(ch);
    }
    fclose(fp);
    return 0;
    }

ps:补充知识:

                feof()函数是我们在C语言中操作文件经常用到的一个函数。这个函数用来表示我们是否已经到了文件的末尾的下一个位置。不管是二进制文件,还是文本文件它都管用。对比EOF(一般宏定义为-1),EOF只能用来判断文本文件是否到达末尾,因为文本文件中的数字是用ASCII表示的,ASCII字符的取值范围是0~255。而二进制文件中可能存在-1,所以不能用EOF来判断结束。

我们使用feof经常遇到的一个问题是,用fgets读文件,然后用fputs打印。最后一行会打印两遍。

这是为什么了?

先说一下feof()函数

在stdio.h里有feof的定义:
#define _IOEOF 0x0010
#define feof(_stream) ((_stream)->_flag _IOEOF)

由此可知只有当_flag=_IOEOF时,feof()才会返回1。在VC里,只有当 file position indicator(在Windows上是fp->_ptr)到了文件末尾,然后再发生读/写操作时,fp-> _flag才会被置为含有_IOEOF,然后再调用feof(),才会得到文件结束的信息。并不是file position indicator一指到文件尾,feof()就认为文件结束。也就是说只有文件指针到了文件末尾的下一个位置,feof()才会返回1。

 

3、把文本文件11.txt中的数字字符复制到文本文件12.txt中;

#include <stdio.h>
#include <stdlib.h>
void main()
{
    FILE *fp1;
    FILE *fp2;
    char ch;
    if((fp1=fopen("d:\\11.txt","r"))==NULL||(fp2=fopen("d:\\12.txt","w"))==NULL)
    {
        printf("can't open \n");
        exit(0);
    }
    while((ch =fgetc(fp1))!=EOF){
       if (ch>='0&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值