• 经典算法_文件


    1 统计大写字母、小写字母、数字、换行、空格、其他的个数

    2 统计汉字个数

    3 用户输入一段文本,写入到文件,以EOF结束,即ctrl+z结束

    4 把一个文本文件复制到另一个文件中

    5 统计文件大小,文件有多少行数

     

    1 统计大写字母、小写字母、数字、换行、空格、其他的个数

     1 #define _CRT_SECURE_NO_WARNINGS
     2 #include <stdio.h>
     3 #include <stdlib.h>
     4 
     5 void main()
     6 {
     7     char path[100] = "E:\1.txt";//文件路径
     8     FILE *fp = fopen(path, "r");//打开文件,按照读的模式
     9 
    10     if (fp)
    11     {
    12         printf("文件打开成功
    ");
    13 
    14         char ch;
    15         int numA = 0;//统计大写字母的个数
    16         int numa = 0;//统计小写字母的个数
    17         int num0 = 0;//统计数字的个数
    18         int numn = 0;//统计换行的个数
    19         int numo = 0;//统计其他字符
    20         int numk = 0;//统计空格的个数
    21 
    22         ch = fgetc(fp);
    23 
    24         while (!feof(fp))//读取一个字符,没有结束就继续
    25         {
    26             if (ch >= 'A' && ch <= 'Z')
    27             {
    28                 numA++;
    29             }
    30             else if (ch >= 'a' && ch <= 'z')
    31             {
    32                 numa++;
    33             }
    34             else if (ch >= '0' && ch <= '9')
    35             {
    36                 num0++;
    37             }
    38             else if (ch == '
    ')
    39             {
    40                 numn++;
    41             }
    42             else if (ch == ' ')
    43             {
    44                 numk++;
    45             }
    46             else
    47             {
    48                 numo++;
    49             }
    50 
    51             ch = fgetc(fp);
    52         }
    53 
    54         printf("大写字母%d,小写字母%d,数字%d,换行%d,空格%d,其他%d", numA, numa, num0, numn, numk, numo);
    55 
    56         fclose(fp);//关闭文件
    57     }
    58     else
    59     {
    60         printf("无法打开文件
    ");
    61     }
    62 
    63     system("pause");
    64 }

     

    2 统计汉字个数

     1 #define _CRT_SECURE_NO_WARNINGS
     2 #include <stdio.h>
     3 #include <stdlib.h>
     4 
     5 void main()
     6 {
     7     char path[100] = "E:\1.txt";//文件路径
     8     FILE *fp = fopen(path, "r");//打开文件,按照读的模式
     9 
    10     if (fp)
    11     {
    12         int ich;//获取字符,fgetc的返回值是int,不用int,ASCII码没有问题,但是汉字就会出问题
    13         //int占4个字节,用int存储汉字
    14         int nume = 0;//标记多少个英文字母
    15         int num0 = 0;//标记多少个数字
    16         int numc = 0;//标记多少个汉字
    17 
    18         while ((ich = fgetc(fp)) != EOF)//从文件获取字符,没有到结尾就继续
    19         {
    20             if ((ich >= 'A' && ich <= 'Z') || (ich >= 'a' && ich <= 'z'))
    21             {
    22                 nume++;
    23             }
    24             else if (ich >= '0' && ich <= '9')
    25             {
    26                 num0++;
    27             }
    28             else if (ich > 128)//判断双字节字符
    29             {
    30                 ich = fgetc(fp);//继续向前读一个字节,因为是双字节字符
    31                 numc++;//双字符自增
    32             }
    33         }
    34 
    35         printf("英文字母%d,数字%d,汉字%d", nume, num0, numc);
    36 
    37         fclose(fp);
    38     }
    39     else
    40     {
    41         printf("无法打开文件
    ");
    42     }
    43 
    44     system("pause");
    45 }

    3 用户输入一段文本,写入到文件,以EOF结束,即ctrl+z结束

     1 #define _CRT_SECURE_NO_WARNINGS
     2 #include <stdio.h>
     3 #include <stdlib.h>
     4 
     5 void main()
     6 {
     7     char path[100] = "E:\1.txt";//文件路径
     8     FILE *fp = fopen(path, "w");//打开一个写入的文件,有就覆盖,没有创建之
     9 
    10     if (fp)
    11     {
    12         printf("文件打开成功
    ");
    13 
    14         char ch = getchar();//用户输入数据,按照写入数据
    15         while (ch != EOF)//文件结尾,crrl+z代表文件的结束,会让getcahr产生结束符EOF
    16         {
    17             fputc(ch, fp);//写入字符
    18             ch = getchar();//获取字符输入
    19         }
    20 
    21         fclose(fp);
    22     }
    23     else
    24     {
    25         printf("无法打开文件
    ");
    26     }
    27 
    28     system("pause");
    29 }

    4 把一个文本文件复制到另一个文件中

     1 #define _CRT_SECURE_NO_WARNINGS
     2 #include <stdio.h>
     3 #include <stdlib.h>
     4 
     5 void main()
     6 {
     7     char pathr[100] = "E:\1.txt";
     8     char pathw[100] = "E:\2.txt";
     9     FILE *fpr = fopen(pathr, "r");//文件读取的指针
    10     FILE *fpw = fopen(pathw, "w");//文件写入的指针
    11 
    12     if (fpr && fpw)
    13     {
    14         while (!feof(fpr))//feof(fpr)返回值为非0,就是到了文件结尾,值为0,还没有到结尾
    15         {
    16             char ch = fgetc(fpr);//从fpr中读取一个字符
    17             fputc(ch, fpw);//向文件写入一个字符
    18         }
    19 
    20         fclose(fpr);
    21         fclose(fpw);
    22     }
    23     else
    24     {
    25         printf("无法打开文件
    ");
    26     }
    27 
    28     system("pause");
    29 }

    5 统计文件大小,文件有多少行数

     1 #define _CRT_SECURE_NO_WARNINGS
     2 #include <stdio.h>
     3 #include <stdlib.h>
     4 
     5 int getfilesize(char *path)//获取文件大小
     6 {
     7     int num = -1;//保存文件大小
     8     FILE *fp = fopen(path, "r");
     9 
    10     if (fp)
    11     {
    12         fseek(fp, 0, SEEK_END);//把位置指针移到文件末尾
    13         num = ftell(fp);//求出文件中的字节数
    14         fclose(fp);
    15     }
    16     else
    17     {
    18         printf("无法打开文件
    ");
    19     }
    20 
    21     return num;
    22 }
    23 
    24 int getn(char *path)//获取行数
    25 {
    26     int i = -1;//保存行数
    27     FILE *fp = fopen(path, "r");
    28 
    29     if (fp)
    30     {
    31         i = 0;
    32 
    33         while (!feof(fp))
    34         {
    35             char str[275];
    36             fgets(str, 275, fp);
    37             i++;
    38         }
    39 
    40         fclose(fp);
    41     }
    42     else
    43     {
    44         printf("无法打开文件
    ");
    45     }
    46 
    47     return i;
    48 }
    49 
    50 void main()
    51 {
    52     char *path = "E:\1.txt";
    53     int num = getfilesize(path);
    54     printf("文件大小%d字节
    ", num);
    55     printf("文件有%d行
    ", getn(path));
    56 
    57     system("pause");
    58 }
  • 相关阅读:
    windows php
    使用 powershell 的 grep 过滤文本
    一个命令巧妙查看git版本演变史
    面试官一听就想发offer的自我介绍,到底是怎么做的?
    用了5年的git,你竟然还不知道它的工作原理
    接口测试到底怎么做,看完这篇文章彻底搞清楚
    一文学会jenkins pipline自动化构建
    Fiddler经典版安装设置流程
    没想到一个简单的重命名,在git中也有这么多学问
    1小时学会jenkins集成邮件/微信/钉钉通知
  • 原文地址:https://www.cnblogs.com/denggelin/p/5525239.html
Copyright © 2020-2023  润新知