c語言細節中的文件歸類代碼

 題目:把a.txt文件中的內容,同一個地點的姓名歸爲一類。輸出的時候按類輸出。並且計算每類地址中姓名的總數。

Code:
  1. #include <stdio.h>  
  2. #include <stdlib.h>  
  3. #include <string.h>  
  4. #define N 100  
  5.   
  6. typedef struct PERSOONSTRU  
  7. {  
  8.  char name[256];  
  9. }  
  10. PERSOON;  
  11. typedef struct FIERSTRU  
  12. {  
  13. int count;// 數據的總數  
  14. char add[256];// 數據的地址  
  15. PERSOON p[256];  
  16. }FIER;  
  17. int main()  
  18. {  
  19.     
  20.     FIER *data=NULL;  
  21.    char tempadd[256];  
  22.    char tempname[256];  
  23.    int m=0;  
  24.    int j=0;  
  25.    int i=0;  
  26.    FILE *pFile;  
  27.    data = (FIER*)malloc(sizeof(FIER)*N);  
  28.    memset(data, 0, sizeof(FIER)*N);  
  29.    // 在c語言中函數前面是不可以插入臨時變量的  
  30.      
  31.    pFile=fopen("a.txt""rb");  
  32.    if (!pFile)  
  33.    {  
  34.      fclose(pFile);  
  35.      exit(0);  
  36.    }  
  37.       
  38.    while(!feof(pFile))  
  39.    {  
  40.         
  41.      memset(tempadd, 0, 256);  
  42.      memset(tempname, 0, 256);  
  43.      fscanf(pFile, "%s%s", tempname, tempadd);  
  44.      // 執行fscanf後data[0].count變爲一個不確定的數  
  45.      // 當把前面的兩個函數變爲memset(tempadd,0, strlen);  
  46.      for (i=0; i<m; i++)  
  47.      {  
  48.          // 存在的類別  
  49.         if (0==strcmp(data[i].add, tempadd))  
  50.         {  
  51.               
  52.             strcpy(data[i].p[data[i].count].name, tempname);  
  53.             data[i].count++;  
  54.             break;  
  55.         }  
  56.      }  
  57.      // 新的類別  
  58.      if (i==m)  
  59.      {  
  60.         strcpy(data[m].add,tempadd);  
  61.         strcpy(data[i].p[data[m].count].name, tempname);  
  62.         data[m].count++;  
  63.          m++;  
  64.      }  
  65.   
  66.    }  
  67.    for (i=0;i<m; i++)  
  68.    {  
  69.      // 輸出種數  
  70.        printf("%d/n", data[i].count);  
  71.        printf(data[i].add);  
  72.        printf("/n");  
  73.        for (j=0; j<data[i].count; j++)  
  74.        {  
  75.            printf("%s/n", data[i].p[j].name);  
  76.        }  
  77.        printf("/n");  
  78.   
  79.    }  
  80.    free(data);  
  81.      
  82.    system("pause");  
  83.     return 0;  
  84. }  

文件中內容爲:姓名 地點

結果:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章