Linux网络编程:读取txt文本数据


单行作为索引,双行保存有数据,代码如下

[cpp]
  1. #include <fcntl.h>   
  2. #include <stdio.h>   
  3. #include <stdlib.h>   
  4. #include <string.h>   
  5.   
  6. #define MAX_DB_SIZE 1000   
  7.   
  8. int database[MAX_DB_SIZE];  
  9.   
  10. const char *paramfile = "parameter.txt";  
  11.   
  12. int get_sum_line(const char *paramfile);  
  13. void init_param(int database[], const char *paramfile, int sum_line);  
  14.   
  15. int main(int argc, char *argv[])  
  16. {  
  17.     int sum = get_sum_line(paramfile);  
  18.     if (sum % 2 == 1)  
  19.     {  
  20.         printf("Parameter Error!\n");  
  21.         return -1;  
  22.     }  
  23.     else  
  24.     {  
  25.         init_param(database, paramfile, sum);  
  26.         return 0;  
  27.     }  
  28. }  
  29.   
  30. int get_sum_line(const char *paramfile)  
  31. {  
  32.     char c = 0;  
  33.     int linenum = 0;  
  34.     FILE *fp = NULL;  
  35.     int iNewLineFlag = 0;  
  36.   
  37.     fp = fopen(paramfile, "r");  
  38.     if (fp == NULL)  
  39.         return -1;  
  40.   
  41.     while ((c = fgetc(fp)) != EOF)  
  42.     {  
  43.         if (c == '\n')  
  44.         {  
  45.             linenum++;  
  46.             iNewLineFlag = 0;  
  47.         }  
  48.         else  
  49.         {  
  50.             iNewLineFlag = 1;  
  51.         }  
  52.     }  
  53.   
  54.     if (iNewLineFlag)  
  55.         linenum++;  
  56.     printf("LineNum:%d\n", linenum);  
  57.     fclose(fp);  
  58.     return linenum;  
  59. }  
  60.   
  61. void init_param(int database[], const char *paramfile, int sum_line)  
  62. {  
  63.     FILE *fd;  
  64.     char line[255];  
  65.   
  66.     int i = 0;  
  67.   
  68.     if (!(fd = fopen(paramfile, "r")))  
  69.     {  
  70.         printf("Couldn't open parameter file %s.\n", paramfile);  
  71.         exit(-1);  
  72.     }  
  73.   
  74.     memset(database, 0, sizeof(int) * MAX_DB_SIZE);  
  75.   
  76.     unsigned int index_tmp;  
  77.     unsigned long data_tmp;  
  78.     unsigned int tmp;  
  79.     int loop_num = sum_line >> 1;  
  80.     for (i = 0; i < loop_num; i++)  
  81.     {  
  82.         index_tmp = 0;  
  83.         fgets(line, 254, fd);  
  84.         sscanf(line, "%x", &index_tmp);  
  85.         printf("index_tmp=%8X;  ", index_tmp);  
  86.   
  87.         data_tmp = 0;  
  88.         fgets(line, 254, fd);  
  89.         sscanf(line, "%x", &data_tmp);  
  90.         printf("data_tmp=%8X; \n", data_tmp);  
  91.     }  
  92.   
  93.     fclose(fd);  
  94. }  

相关内容