前言

本文分为两部分,其中一部分主要使用C语言编程实现读取文件内容(要打开的文件名称采用命令行方式输入),统计文件内容的行数,并将文件内容保存到数组里面打印输出。
另一部分使用C语言编程实现读取文件内容(要打开的文件名称采用命令行方式输入),统计文件内容的行数,保存文件内容的数组采用动态分配内存的方式,这样不管文件大小,都可以进行文件内容读取保存。同时还可将读取的文件内容使用fprintf函数保存到另一个文件中。

第一部分

对保存文件内容的数组分配200个int型长度的内存。
主要使用c语言从命令行输入文件,读入文件,统计行数,并将文件内容保存到数组里面。

程序

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
int main(int argc,char* argv[])   //命令行传参,argc代表传入参数个数,argv表示传入的参数
{int i,j;int k=0;int count=0;  //统计文件中字符个数int sum_row;  //统计文件中字符个数int flag=0;FILE *fp;  //文件指针FILE *fp1;int a_in[200];  //保存文件内容的数组int b_in[200];  //保存文件内容的数组fp=fopen(argv[1],"r");   //打开文件,只读//fp1=fopen("int_data.txt","r"); fp1=fopen(argv[1],"r"); if(fp==NULL)  {  printf("File cannot open! " );  //exit;  return 0;}  if(argc!=2)   //判断输入参数个数,如果不为2个就报错{printf("参数个数错误");return -1;}while(!feof(fp))   //读文件,直到文件末尾{flag = fgetc(fp);  //将文件内容附给flagif(flag == '\n')  //如果为\n表示到行尾,便进行计数count++;}sum_row = count+1; //加上文件最后一行,即为文件总的行数printf("文件行数为:%d",sum_row);  //打印文件行数,因为每行只有一个数,所以即统计文件中有多少个数printf("\n");
for(i=0;i<sum_row;i++)  //控制文件行数{for (j=0;j<1;j++)  //控制文件列数{fscanf(fp1,"%d",&a_in[j]);  //将文件其中一行内容保存到数组中b_in[k]=a_in[j];  //将读到的每一行的数据都保存到b_in数组中k++;  //行数加一}
}
printf("文件内容为:\n");
for (i=0;i<k;i++)  //循环打印保存到数组中的数据
{printf("%d\t",b_in[i]);  //打印
}
fclose(fp);  //关闭文件,释放指向文件的指针
fclose(fp1);  //关闭文件,释放指向文件的指针
return 0;
}

运行结果

  • 注 运行采用tcc运行C程序

文件内容为从1到110个数,每个数存储在一行

运行结果:

C:\Users\CL\Desktop\学习\C\conv\fprintf>tcc read1.cC:\Users\CL\Desktop\学习\C\conv\fprintf>read1.exe int_data.txt
文件行数为:110
文件内容为:
1       2       3       4       5       6       7       8       9       10      11      12      13      14      15
16      17      18      19      20      21      22      23      24      25      26      27      28      29      30
31      32      33      34      35      36      37      38      39      40      41      42      43      44      45
46      47      48      49      50      51      52      53      54      55      56      57      58      59      60
61      62      63      64      65      66      67      68      69      70      71      72      73      74      75
76      77      78      79      80      81      82      83      84      85      86      87      88      89      90
91      92      93      94      95      96      97      98      99      100     101     102     103     104     105
106     107     108     109     110

第二部分

主要实现C语言从命令行输入文件,读入文件,统计行数,对保存文件内容的数组进行动态内存分配,并将文件内容保存到数组里面,打印输出,同时将读入的文件内容保存到另外一个文件中。

程序

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
int main(int argc,char* argv[])   //命令行传参,argc代表传入参数个数,argv表示传入的参数
{int i,j;int k=0;int count=0;  //统计文件中字符个数int sum_row;  //统计文件中字符个数int flag=0;  //用于暂时将文件内容保存FILE *fp;    //文件指针FILE *fp1; FILE *fp2;int *a_in;   //用于读文件中的数据int *b_in;   //用于保存从文件中读入的数据fp=fopen(argv[1],"r");   //打开文件,只读,argv[1]代表从命令行输入的文件名称,即运行.exe程序时输入的第二个参数fp1=fopen(argv[1],"r");   //再次打开文件,(第一次打开文件用于统计文件的行数,即数据的个数)用于将文件内容保存到指针数组里fp2=fopen("test1.txt","w");   //打开文件,只写,用于将数组内容重新保存到另一个文件中if(fp==NULL)    //打开文件失败{  printf("File cannot open! ");  //exit;  return 0;}  if(argc!=2)   //判断输入参数个数,如果不为2个就报错{printf("参数个数错误");return -1;}while(!feof(fp))  //读文件,直到文件末尾{flag = fgetc(fp);  //将文件内容附给flagif(flag == '\n')  //如果为\n表示到行尾,便进行计数{count++;  //统计文件行数}}sum_row = count+1; //加上文件最后一行,即为文件总的行数printf("文件行数为:%d",sum_row);  //统计文件行数,因为每行只有一个数,所以即统计文件中有多少个数printf("\n");a_in = (int*)malloc(sizeof(int)*200);  //动态分配用于保存文件内容的指针数组长度,以免溢出b_in = (int*)malloc(sizeof(int)*200);  //动态分配用于保存文件内容的指针数组长度,以免溢出if (!a_in)   //动态内存分配失败{printf("内存分配失败");return-1;}if (!b_in)  //动态内存分配失败{printf("内存分配失败");return-1;}for(i=0;i<sum_row;i++)  //控制文件行数{for (j=0;j<1;j++)   //控制文件列数{fscanf(fp1,"%d",&a_in[j]);  //将文件其中一行内容保存到指针数组中b_in[k]=a_in[j];    //将读到的每一行的数据都保存到b_in指针数组中k++;  //行数加一}}        printf("文件内容为:\n");for (i=0;i<k;i++)  //循环打印保存到指针数组中的数据{printf("%d\t",b_in[i]);  //打印fprintf(fp2,"%d\n",b_in[i]);  //将保存到数组的数据保存到test1.txt文件中}fclose(fp);  //关闭文件,释放指向文件的指针fclose(fp1);  //关闭文件,释放指向文件的指针fclose(fp2);return 0;free(a_in);  //释放指针free(b_in);  //释放指针return 0;
}

文件内容为从1到110个数,每个数存储在一行。

结果

C:\Users\CL\Desktop\学习\C\conv\fprintf>tcc read2.cC:\Users\CL\Desktop\学习\C\conv\fprintf>read2.exe int_data.txt
文件行数为:110
文件内容为:
1       2       3       4       5       6       7       8       9       10      11      12      13      14      15
16      17      18      19      20      21      22      23      24      25      26      27      28      29      30
31      32      33      34      35      36      37      38      39      40      41      42      43      44      45
46      47      48      49      50      51      52      53      54      55      56      57      58      59      60
61      62      63      64      65      66      67      68      69      70      71      72      73      74      75
76      77      78      79      80      81      82      83      84      85      86      87      88      89      90
91      92      93      94      95      96      97      98      99      100     101     102     103     104     105
106     107     108     109     110

保存到新文件的结果:

到此就成功实现了使用C语言进行文件内容读取,统计个数,保存到数组的功能,同时也实现了数据重新保存到另一个文件中。
如何从命令行输入数据,并保存到文件中,可参考我的另一篇博客:
c语言从命令行输入数据,并保存到文件中
对于如何统计每行有多个数据的文件中数据的个数,可参考我的博客:
c语言命令行传参输入要读入的文件,统计文件中字符的个数

C语言读取文件内容,保存到数组里面相关推荐

  1. C语言 读取文件内容

    读取文件文本内容: 要读取的目标文件: 要读取的目标内容: 运行前请将代码文件和要读取的文件放在同一目录下. #include <stdio.h>int main(void){int ch ...

  2. C语言读取文件大量数据到数组

    针对.txt文档的大量有规律数据,譬如100行8列的数据将其读取到二维数组(矩阵)中,留作之后的数据处理. 改程序通过宏定义的方法来确定将要读取程序的行数和列数,将数据读取到二维数组data[100] ...

  3. cNoteReadFile_C语言读取文件内容

    1 #include"stdio.h" 2 /* 3 char readScale() 4 从文本中读出一定范围的字符到数组中 5 文本名 范围 数组地址 6 由函数参数给定 7 ...

  4. c语言读取文件到结构体数组,有关文件读写到结构体数组问题;

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 typedef struct IMG { char *name; int weight; int height; }IMG; 这是我的结构体存的是 图片的 ...

  5. linux 读取变量内容,linux sh 读取文件内容,if判读语句,变量var打印

    #!/bin/bash #1 读取文件 并显示 cat state.txt | while read line do echo $line done #2 读取文件 并显示 cat state.txt ...

  6. python 保存pdf文件_PyPDF2读取PDF文件内容保存到本地TXT实例

    我就废话不多说了,大家还是直接看代码吧! from PyPDF2.pdf import PdfFileReader import pandas as pd def Pdf_to_txt(pdf): f ...

  7. PyPDF2读取PDF文件内容保存到本地TXT

    利用PyPDF2读取PDF文件内容保存到本地TXT from PyPDF2.pdf import PdfFileReader import pandas as pddef Pdf_to_txt(pdf ...

  8. php读取文件内容不全,php读取文件内容的三种方法

    //**************第一种读取方式***************************** 代码如下: header("content-type:text/html;chars ...

  9. js 读取php文件内容为空,PHP 读取文件内容代码(txt,js等)

    PHP 读取文件内容代码(txt,js等) 发布于 2014-10-15 20:15:37 | 128 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本语言PHP(外文名: Hyperte ...

最新文章

  1. python二维元组_python中读入二维csv格式的表格方法详解(以元组/列表形式表示)
  2. 华为python工程师工资-华为百万年薪抢人工智能应届生,这个高薪行业你如何进入?...
  3. [Elasticsearch2.x] 多字段搜索 (三) - multi_match查询和多数字段 译
  4. hibernate3 hbm2java_hibernate3下hbm2ddl和hbm2java的配置
  5. 返回结果数据实体类R
  6. java s1=abc s2=abc s1==s2_经典问题:String s1 = abc 与 String s2 = new String(abc)的区别...
  7. STL源码剖析 set相关算法
  8. Spring : @EnableAutoConfiguration注解
  9. log4j.properties配置详解(转载)
  10. [Ext JS 4] 实战之浏览器兼容
  11. Sketch中文版教程,已加星标的更新如何使用?什么是Sketch星标功能?
  12. tablayout 增加数字小标_Android中TabLayout添加小红点的示例代码
  13. 软件测试面试题整理(三)之工作/项目流程篇
  14. QT5.11下载与安装教程
  15. 量子计算机采用量子力学原理,物理学:量子计算机的工作是不是就是根据量子力学原理造的?...
  16. 【Unity】实现立体的UI
  17. 不会哄女朋友?来,教你爬搞笑图片
  18. 京东jos 获取授权及php-sdk的使用示例
  19. idea 启动多个项目 减少内存占用
  20. mywallop、orkut、gmail的邀请

热门文章

  1. Effie :影评人“炸锅”,献礼建党 100 周年的《大决战》怎么了?
  2. OpenFire源码学习之五:用户登录
  3. QT QSettings介绍
  4. [转载]离别二十年,旧地重返.老友重逢,河口再练拳......。
  5. Java学习四阶段-07 服务注册中心Nacos
  6. tldr_tldr将手册页转换为简明英语解释
  7. 还在手动发早安吗?教你用java实现每日给女友微信发送早安
  8. VB和C#中循环语句
  9. 中国电动压缩机行业市场研究与预测报告(2023版)
  10. JAVA-基于RFC6238的TOTP算法的简单实现