c语言中用文件处理数据,用C语言对文件中的数据进行处理

本博客中有用verilog处理文件数据的代码,本博文采用C 处理文件中的数据。

有时候要生成一个mif文件—— altera memory  initial file。本次工程中我得到的是一个大型的数据矩阵一样的东西,我需要慢慢靠近把它处理成mif格式。

第一个程序,把文件读进来是这么干的

1 //date :2016/07/092 //designer:cobbpeng3 //version :004 //function:

5

6 #include "stdio.h"

7 //#define METHOD1

8

9 voidmain ()10 {11 unsigned intb ;12 inti ;13 FILE *fp0 = fopen("test.txt","r+") ;14 #ifdef METHOD115 while (!feof (fp0))16 {17 fscanf (fp0,"%x",&b);18 #else

19 while (fscanf (fp0,"%x",&b)!=EOF)20 #endif

21 printf ("%x\n",b);22 #ifdef METHOD123 }24 #endif

25 fclose (fp0) ;26 }

文件读进来了,需要把它格式转换成一行一个的格式,继续修改程序

1 //date :2016/07/092 //designer:cobbpeng3 //version :014 //***************************************************************************5 //function:read the file finger.txt. It show as a array 112*96 in file ,6 //I musk show the data alone at each line

7

8 #include "stdio.h"

9 #define TEST

10

11 intmain ()12 {13 unsigned int in_data = 0;14 #ifdef TEST15 unsigned int i = 0;16 #endif

17 //open file one for read and one for write

18 FILE *fp0 = fopen("finger.txt","r") ;19 FILE *fp1 = fopen("format.txt","w") ;20 //********************************************************

21 if ((fp0==NULL)&&(fp1 ==NULL))22 printf ("open file failed !!! \n");23 else

24 {25 printf ("open file success !!! \n");26 //read data finish until being end of the file

27 while (fscanf (fp0,"%x",&in_data)!=EOF)28 {29 fprintf(fp1,"%.2x\n",in_data);30 #ifdef TEST31 if(i<115) printf ("%.2x\n",in_data) ;32 i++;33 //break ;

34 #endif

35 }36 }37 fclose (fp0) ;38 fclose (fp1) ;39 }

上面的代码只是转换了一个格式对吧,要转换到mif格式还差点。所以有了以下代码

1 //date :2016/07/092 //designer:cobbpeng3 //version :024 //***************************************************************************5 //function:read the file finger.txt. It show as a array 112*96 in file ,6 //I musk show the data alone at each line

7

8 #include "stdio.h"

9 //#define TEST

10 #define METHOD1

11

12 intmain ()13 {14 unsigned int in_data = 0;15 unsigned int byte_num =0;16 char w_num =0;17 char h_num = 0;18 char str_mif[5] ;19 char *s_s;20

21 #ifdef TEST22 unsigned int i = 0;23 #endif

24 //open file

25 FILE *fp0 = fopen("finger.txt","r") ;26 FILE *fp1 = fopen("format.txt","w") ;27 FILE *fp2 = fopen("musk_mem.mif","r") ;28 //********************************************************

29 if ((fp0==NULL)&&(fp1 == NULL)&&(fp2 ==NULL))30 printf ("open file failed !!! \n");31 else

32 {33 printf ("open file success !!! \n");34 //read data finish until being end of the file

35 while (fscanf (fp0,"%x",&in_data)!=EOF)36 {37 byte_num++;38 fprintf(fp1,"%.2x,\n",in_data);39 w_num++;40 #ifdef TEST41 if(i<115) printf ("%.2x\n",in_data) ;42 i++;43 //break ;

44 #endif

45 }46 printf ("data num = %ld",byte_num);47 //***************************************************************

48 #ifdef METHOD149 while (fscanf (fp2,"%c",&str_mif[0])!=EOF)50 {51 #else

52 while(!feof(fp2))53 {54 str_mif[0]=fgetc(fp2) ;55 #endif

56 //printf ("%c\n",str_mif[0]);

57

58 if((str_mif[0]==‘N‘)&&(str_mif[1]==‘I‘)&&(str_mif[2]==‘G‘)&&(str_mif[3]==‘E‘)&&(str_mif[4]==‘B‘))59 {60 printf ("\nfind string\n");61 break;62 }63 else

64 {65 str_mif[4]=str_mif[3] ;66 str_mif[3]=str_mif[2] ;67 str_mif[2]=str_mif[1] ;68 str_mif[1]=str_mif[0] ;69 }70 }71

72 }73 fclose (fp0) ;74 fclose (fp1) ;75 fclose (fp2) ;76 }

上面的程序也只是去寻找一个节点:以BEGIN为结尾的地方。—— 因为mif文件中begin后面跟随的是数据。并没有做其他的东西。—— 用C语言去追踪文件中的特定字符还真是有些麻烦。

当我做到这里的时候发现

把数据导入excel,再在excel中复制数据到Q中开启的mif文件中 —— 几个快捷键就搞定了。我去,让我凑了一整天的C 代码。

猜到了开头,却没有猜到结尾。

原文:http://www.cnblogs.com/sepeng/p/5740079.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值