精华内容
下载资源
问答
  • C语言读取文件内容

    千次阅读 2017-07-03 21:38:47
    #include void main(){ FILE *fp = fopen("1.txt", "r"); char a[100]="\0"; int i=0; while (!feof(fp)) { fscanf(fp, "%c", &a[i]); printf("%c",a[i]); i++; } fclose(fp);...}
    #include <stdio.h>


    void main(){
    FILE *fp = fopen("1.txt", "r");
    char a[100]="\0";
    int i=0;
    while (!feof(fp))
    {


    fscanf(fp, "%c", &a[i]);
    printf("%c",a[i]);
    i++;
    }
    fclose(fp); //读完就退出循环


    }
    展开全文
  • C语言读取文件内容,保存到数组里面

    万次阅读 多人点赞 2020-01-01 22:22:01
    另一部分使用C语言编程实现读取文件内容(要打开的文件名称采用命令行方式输入),统计文件内容的行数,保存文件内容的数组采用动态分配内存的方式,这样不管文件大小,都可以进行文件内容读取保存。同时还可将读取的...

    前言

    本文分为两部分,其中一部分主要使用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);  //将文件内容附给flag
        if(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.c
    
    C:\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);  //将文件内容附给flag
    		if(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.c
    
    C:\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语言新案例-读取文件进度条01C语言新案例-读取文件进度条//今晚内容C语言精简案例-读取文件进度条#include #include #include #include int main(){int size = 0; //文件的总大小char tmp[100]; //临时...

    原标题:C语言新案例-读取文件进度条

    01

    C语言新案例-读取文件进度条

    //今晚内容:C语言精简案例-读取文件进度条

    #include

    #include

    #include

    #include

    int main()

    {

    int size = 0; //文件的总大小

    char tmp[100]; //临时数组,保存当前读取的内容

    int len = 0; //当前读取数

    int sum = 0; //已读取的大小

    char content[3068] = {0};//保存文件内容

    int progress = 20; //进度条的长度设置为20

    int current = 0;//当前进度

    int i; //循环变量

    //1.打开文件及关闭文件

    FILE* pf = NULL; //文件指针

    pf = fopen("8_22.c","rb");//以读的方式打开文件

    if(pf==NULL)//判断文件是否打开正常

    {

    printf("文件打开失败,程序退出!n");

    return -1;//返回-1是表示出错的意思

    }

    //2.获取文件总大小,及把文件指针设置到文件起始处

    fseek(pf,0,SEEK_END);//把文件指针放到文件末尾位置

    size = ftell(pf); //得到文件大小,以字节为单位

    fseek(pf,0,SEEK_SET);//文件指针设置到文件起始处

    srand((unsigned)time(NULL));//随机种子

    while(!feof(pf))//非文件结尾,循环读取文件内容并显示进度

    {

    len = fread(tmp,1,rand() % 100,pf);//读取随机数量的内容,保存在tmp数组中

    tmp[len] = '0'; //添加字符串的结束标记

    sum += len; //累加总读取数 sum = sum + len;

    strcat(content,tmp);//将tmp数组中的内容附加到content数组中

    //进度条

    current = sum/(size/progress);//计算当前进度

    printf("r");//让光标移动到行首

    for(i=0;i

    {

    if(i

    printf("■");

    else

    printf("□");

    }

    printf("[%6.2f%%]",(float)sum / size*100);

    Sleep(300);

    }

    //显示文件内容

    //printf("n%sn", content);

    fclose(pf);//关闭文件

    return 0;

    责任编辑:

    展开全文
  • C语言读写文件内容的参数形式

    千次阅读 2018-01-03 10:41:29
    C语言中,大家常用到fopen打开文件,准备进行写操作,再用fwrite把数据写入文件,最后用fclose关闭文件。 如以下C代码:   #include char buf[10] = {10,10,10,10,10,10,10,10,10,10}; FILE *fp = fopen...
    http://blog.csdn.net/guyue6670/article/details/6681037
    在C语言中,大家常用到fopen打开文件,准备进行写操作,再用fwrite把数据写入文件,最后用fclose关闭文件。
    如以下C代码:
     
    #include <stdio.h>

    char buf[10] = {10,10,10,10,10,10,10,10,10,10};

    FILE *fp = fopen("c:\\test.dat","w");
    fwrite(buf,1,10,fp);
    fclose(fp);

    FILE *fp1 = fopen("c:\\test1.dat","wb");
    fwrite(buf,1,10,fp);
    fclose(fp1);

    我们注意到,程序的第一段定义一个数组,每个分量的值为:10,等价的十六进制为0A。

    第二段,先是打开一个文件test.dat进行写操作,再是把10个数据写入文件,最后关闭文件。

    第三段,功能差不多,只是文件名换成了test1.dat,打开文件的模式换成了wb.

    第二段和第三段有什么区别呢?我们看一下最后的文件内容:

    test.dat:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A

    test1.dat: 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A

    原因是为什么呢?这就是w 和 wb的区别,w是以文本方式打开文件,wb是二进制方式打开文件,以文本方式打开文件时,fwrite函数每碰到一个0x0A时,就在它的前面加入0x0D.其它内容不做添加操作。

     

    r 以只读方式打开文件,该文件必须存在。

      r+ 以可读写方式打开文件,该文件必须存在。

      rb+ 读写打开一个二进制文件,只允许读写数据。

      rt+ 读写打开一个文本文件,允许读和写。

      w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。

      w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。

      a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)

      a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留)

      wb 只写打开或新建一个二进制文件;只允许写数据。

      wb+ 读写打开或建立一个二进制文件,允许读和写。

      wt+ 读写打开或着建立一个文本文件;允许读写。

      at+ 读写打开一个文本文件,允许读或在文本末追加数据。

      ab+ 读写打开一个二进制文件,允许读或在文件末追加数据。

      上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b 字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件。不过在POSIX系统,包含Linux都会忽略该字符。由fopen()所建立的新文件会具有S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH(0666)权限,此文件权限也会参考umask 值。

    展开全文
  • c语言 读取文件内容 文件写入

    千次阅读 2014-03-06 15:11:01
    #include #include   ...//读取文件filename的内容到dest数组,最多可以读maxlen个字节 //成功返回文件的字节数,失败返回-1 int read_file(const char *filename, char *dest, int maxlen) {
  • C语言读取文件内容统计代码

    千次阅读 2012-12-18 16:54:58
    功能就是读取一个文件内容,然后统计字符。 #include #include #include #define INSERT 1 #define QUERY 2 #define UPDATE 3 #define DELETE 4 #define LIST 5 #define QUIT 0 FILE
  • C语言读取文件内容,按行读

    千次阅读 2013-06-01 21:27:54
    fgets读取一行文件内容到字符数组 并把文件指针指向下一行 用法如下 #include int main() {  FILE * pFile;  char mystring [100];  pFile = fopen ("myfile.txt" , "r");  if (pFile == NULL) ...
  • 我在当前目录有一个abc.txt文件里面有许多信息, 以"[" "]" 截取这2个中间的内容比如:abc.txt 内容如下 [aaaaa][bbbbb] 然后用c语言程序把 这2个 存放到数组指针中.,去掉 []
  • 1.以文本方式打开文件。 2.循环用fscanf格式化输入数据到数组。 3.判断fscanf的返回值,如果显示到达文件结尾,退出输入。 4.关闭文件。 5.使用数据。 二、代码实现: 1.设定文件名为in.txt, 存有一系列整型数据,以...
  • c语言读写文件

    2012-11-20 09:22:09
    总结了c语言读写文件的方法,非常适合初学者
  • C语言读写文件到磁盘
  • C语言 读取文件

    2017-11-28 23:07:48
    该代码采用C语言编程,通过文件路径读取文本文件,并保存在数组中。
  • C语言读取文件

    2016-06-14 22:41:05
    c语言文件操作,详细的给出了如何读取文本文件数据,以及存储数据到另外的文件
  • 可是在读取一段或者整个文件内容时,很多人都不知道如何下手,下面就简单的说说如何使用C语言读取整个文件内容。 (对C基本掌握的人都知道fgets函数可以从文件中读取n个字节的数据,但是fgets存...
  • 在本篇文章里小编给大家整理的是关于c语言如何读取txt文件内容,需要的朋友们可以参考下。
  • C语言读取文件内容

    千次阅读 2015-11-21 16:41:01
    有的时候,我们写程序时,需要读取文件内容
  • C语言读写文件

    千次阅读 2019-06-10 15:37:03
    C读写文件 使用 fopen(文件名,访问模式) 函数来打开文件,一般有getc/putc , fgets/fputs , fscanf/fprintf , fread/fwrite 四大家族来读写文件。 关于文件访问模式有如下的选择: 访问模式 说明 r 以只读...
  • c语言读取文件信息 c语言读取文件信息 LINUX LINUX
  • C语言读写文件操作pdf文档

    热门讨论 2011-01-08 22:18:15
    C语言读写文件操作pdf文档,c语言中怎么对文件进行操作
  • C语言读写文件操作

    万次阅读 多人点赞 2018-12-28 20:05:11
    二、读写文件 1、字符的读写 2.字符串的读写 3.数据块的读写 4.格式化读写 三、关闭文件 C语言中对于文件的操作是通过指针来完成的,要注意,文件指针不是指向一段内存空间的,它实际上指向的是描述这个文件...
  • C语言中,文件操作都是由库函数来完成的。要读取一个txt文件,首先要使用文件打开函数fopen()。fopen函数用来打开一个文件,其调用的一般形式为: 文件指针名=fopen(文件名,使用文件方式) 其中,“文件指针名”...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 163,031
精华内容 65,212
关键字:

c语言读取文件内容

c语言 订阅