題目:把a.txt文件中的內容,同一個地點的姓名歸爲一類。輸出的時候按類輸出。並且計算每類地址中姓名的總數。
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #define N 100
- typedef struct PERSOONSTRU
- {
- char name[256];
- }
- PERSOON;
- typedef struct FIERSTRU
- {
- int count;// 數據的總數
- char add[256];// 數據的地址
- PERSOON p[256];
- }FIER;
- int main()
- {
- FIER *data=NULL;
- char tempadd[256];
- char tempname[256];
- int m=0;
- int j=0;
- int i=0;
- FILE *pFile;
- data = (FIER*)malloc(sizeof(FIER)*N);
- memset(data, 0, sizeof(FIER)*N);
- // 在c語言中函數前面是不可以插入臨時變量的
- pFile=fopen("a.txt", "rb");
- if (!pFile)
- {
- fclose(pFile);
- exit(0);
- }
- while(!feof(pFile))
- {
- memset(tempadd, 0, 256);
- memset(tempname, 0, 256);
- fscanf(pFile, "%s%s", tempname, tempadd);
- // 執行fscanf後data[0].count變爲一個不確定的數
- // 當把前面的兩個函數變爲memset(tempadd,0, strlen);
- for (i=0; i<m; i++)
- {
- // 存在的類別
- if (0==strcmp(data[i].add, tempadd))
- {
- strcpy(data[i].p[data[i].count].name, tempname);
- data[i].count++;
- break;
- }
- }
- // 新的類別
- if (i==m)
- {
- strcpy(data[m].add,tempadd);
- strcpy(data[i].p[data[m].count].name, tempname);
- data[m].count++;
- m++;
- }
- }
- for (i=0;i<m; i++)
- {
- // 輸出種數
- printf("%d/n", data[i].count);
- printf(data[i].add);
- printf("/n");
- for (j=0; j<data[i].count; j++)
- {
- printf("%s/n", data[i].p[j].name);
- }
- printf("/n");
- }
- free(data);
- system("pause");
- return 0;
- }
文件中內容爲:姓名 地點
結果: