鱼C论坛

 找回密码
 立即注册
查看: 1515|回复: 3

[技术交流] 这也太快了吧!!!处理csv文档(求和,平均数,最大数,最小数)3W多行1秒就搞定了!

[复制链接]
发表于 2020-2-19 18:50:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 Cool_Breeze 于 2020-2-21 09:08 编辑
  1. //编译器 Dev-C++  5.11

  2. #include <stdio.h>
  3. #include <string.h>
  4. #include <stdlib.h>
  5. #define SUN_X 50        //存储数据大小
  6. int max=10240;
  7. char tempc[1000][50]={0};
  8. char (*t_p)[50]=tempc;
  9. double dou_sum[32]={0};  //待处理数据个数
  10. int nu=0;

  11. void delims(char *ser,char res[][SUN_X],int n);  //n=计数
  12. FILE *file_p(char *path,const char *mode);

  13. int main(int argv,char *argc[])
  14. {
  15.         FILE *fp;
  16.         FILE *b_txt;
  17.         fp=file_p(argc[1],"r");                  //源文件
  18.         b_txt=file_p(argc[2],"w");                             //结果
  19.         char arr[max];
  20.         char name[100][SUN_X]={0};
  21.         char (*p)[SUN_X]=name;
  22.         fgets(arr,max,fp);
  23.         delims(arr,name,nu);                     //将第一行的标题单独存放
  24.         int i=0,k=0,j=0,count=0;
  25.         double min[SUN_X]={0},max_1[SUN_X]={0};   //最大值,最小值
  26.         while (fgets(arr,max,fp)!=NULL)
  27.         {
  28.                 nu=0;
  29.                 count++;
  30.                 delims(arr,tempc,nu);
  31.                 for (i=1;*(*(t_p+i)+0)!='\0';i++)    //(i=1)跳过第一列的数据
  32.                 {
  33.                         if (i<=nu) dou_sum[i-1]+=atof(*(t_p+i));    //将每一项数据相加        
  34.                         if (count==1)
  35.                         {
  36.                                 min[i-1]=atof(*(t_p+i));         //最少值(初始化)       
  37.                                 max_1[i-1]=atof(*(t_p+i));   //最大值(初始化)       
  38.                         }
  39.                         else
  40.                         {
  41.                                 if (atof(*(t_p+i)) > max_1[i-1]) max_1[i-1]=atof(*(t_p+i));  //最大值
  42.                                 if (atof(*(t_p+i)) < min[i-1]) min[i-1]=atof(*(t_p+i));      //最小值
  43.                         }
  44.                 }
  45.         }
  46.         //printf("%d\t%d",nu,count);
  47.         double avg[SUN_X]={0};      //平均值
  48.         for (i=0;*(*(p+i+1)+0)!='\0';i++)
  49.         {
  50.                 if (i<nu) avg[i]=dou_sum[i]/count;   //最后一行
  51.                 else
  52.                 {
  53.                         avg[i]=dou_sum[i]/(count-1);
  54.                 }
  55.         }
  56.         p=name;
  57.         //打印表格
  58.         /*
  59.         char b_ge[33]="+------------------------------+" ;
  60.         char b_ge1[22]="--------------------+" ;
  61.         fprintf(b_txt,"%s%s%s%s%s\n|%-30s|%-20s|%-20s|%-20s|%-20s|\n",b_ge,b_ge1,b_ge1,b_ge1,b_ge1,"Item","Sum","Min","Max","Avg");
  62.         for (i=0;*(*(p+i+1)+0)!='\0';i++) fprintf(b_txt,"%s%s%s%s%s\n|%-30s|%-20f|%-20f|%-20f|%-20f|\n",b_ge,b_ge1,b_ge1,b_ge1,b_ge1,*(p+i+1),dou_sum[i],min[i],max_1[i],avg[i]);  //(p+i+1)跳过第一列的数据
  63.         fprintf(b_txt,"%s%s%s%s%s",b_ge,b_ge1,b_ge1,b_ge1,b_ge1);
  64.         */
  65.         fprintf(b_txt,"%-30s%-20s%-20s%-20s%-20s\n","Item","Sum","Min","Max","Avg");
  66.         for (i=0;*(*(p+i+1)+0)!='\0';i++) fprintf(b_txt,"%-30s%-20lf%-20f%-20f%-20lf\n",*(p+i+1),dou_sum[i],min[i],max_1[i],avg[i]);  //(p+i+1)跳过第一列的数据
  67.         fclose(fp);
  68.         fclose(b_txt);
  69.         return 0;
  70. }
  71. //分割每一项放到数组tempc
  72. void delims(char *ser,char res[][SUN_X],int n)
  73. {
  74.         int j=0,k=0,i=0;
  75.         for (;ser[i]!='\0';i++)
  76.         {
  77.                 if (ser[i]!=',' && ser[i]!=' ')
  78.                 {
  79.                         res[j][k]=ser[i];       
  80.                         k++;
  81.                 }
  82.                 if (ser[i]==',')
  83.                 {
  84.                         res[j][k]='\0';
  85.                         j++,nu++,k=0;
  86.                 }
  87.                 if (ser[i+1]=='\0') res[j][k-1]='\0';  //把最后一个符号替换
  88.         }
  89. }
  90. FILE *file_p(char *path,const char *mode)
  91. {
  92.         FILE *fp;
  93.         if ((fp=fopen(path,mode))==NULL)
  94.         {
  95.                 printf("%s open faile!",path);
  96.                 exit(0);
  97.         }
  98.         return fp;
  99. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-2-19 18:51:17 | 显示全部楼层
本帖最后由 Cool_Breeze 于 2020-3-15 18:44 编辑

结果如下:
  1. Nu Item                                Max             Min             Sum             Avg            
  2. 1  GPU Temperature (C) [0] (C)        74.62657        40.57681        8499.02069      67.99217        
  3. 2  Junction Temperature (C) [0] (C)   84.05241        40.58622        9719.54632      77.75637        
  4. 3  Mem Temperature (C) [0] (C)        84.00000        42.00000        8998.64532      71.98916        
  5. 4  VR_GFX (C) [0] (C)                 60.00000        33.00000        6346.72336      50.77379        
  6. 5  VR_SOC (C) [0] (C)                 58.00000        34.00000        6074.32725      48.59462        
  7. 6  VR_MEM (C) [0] (C)                 0.00000         0.00000         0.00000         0.00000         
  8. 7  VR_VDDCI (C) [0] (C)               0.00000         0.00000         0.00000         0.00000         
  9. 8  Liquid0 (C) [0] (C)                0.00000         0.00000         0.00000         0.00000         
  10. 9  Liquid1 (C) [0] (C)                0.00000         0.00000         0.00000         0.00000         
  11. 10  PLX (C) [0] (C)                    0.00000         0.00000         0.00000         0.00000         
  12. 11  Min (C) [0] (C)                    65.23669        38.50471        7491.50144      59.93201        
  13. 12  GFXCLK Freq [0] ()                 1553.07312      783.68744       187591.28837    1500.73031      
  14. 13  PWM [0] ()                         43.73852        0.00000         4269.58901      34.15671        
  15. 14  FAN Speed [RPM] [0] ()             1716.95959      124.55509       167371.82184    1338.97457      
  16. 15  Limit PPT0 (W) [0] (W)             165.00000       165.00000       20625.00000     165.00000      
  17. 16  Value PPT0 (W) [0] (W)             165.00716       9.41742         19857.86155     158.86289      
  18. 17  GFX Activity (%) [0] (%)           97.66265        0.10941         11638.45836     93.10767        
  19. 18  PCIe Link Speed (GT/s) [0] (GT/s)  8.00000         8.00000         1000.00000      8.00000         
  20. 19  PCIe Link Width [0] ()             16.00000        16.00000        2000.00000      16.00000        
  21. 20  PCIe Correctable Error [0] ()      0.00000         0.00000         0.00000         0.00000         
  22. 21  PCIe Uncorrectable Error [0] ()    0.00000         0.00000         0.00000         0.00000         
  23. 22  PCIe Residency Gen 1 (%) [0] (%)   60.00000        0.00000         336.84718       2.69478         
  24. 23  PCIe Residency Gen 2 (%) [0] (%)   0.00000         0.00000         0.00000         0.00000         
  25. 24  PCIe Residency Gen 3 (%) [0] (%)   100.00000       40.00000        12163.15287     97.30522        
  26. 25  PCIe Residency Gen 4 (%) [0] (%)   0.00000         0.00000         0.00000         0.00000         
  27. 26  PCIe Residency L0 (%) [0] (%)      100.00000       100.00000       12500.00000     100.00000      
  28. 27  PCIe Residency L0s (%) [0] (%)     0.00000         0.00000         0.00000         0.00000         
  29. 28  PCIe Residency L1 (%) [0] (%)      0.00000         0.00000         0.00000         0.00000         
  30. 29  Fan PWM reading [%] [0] (%)        44.00000        0.00000         4286.00000      34.28800        
  31. 30  mclk[0] (MHz)                      876.00000       101.00000       105924.00000    854.22581      
  32. 31  sclk[0] (MHz)                      1585.00000      781.00000       186631.00000    1505.08871      
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-19 18:53:35 | 显示全部楼层
本帖最后由 Cool_Breeze 于 2020-3-15 18:42 编辑
  1. #if 0
  2.         By Cool_Breeze
  3.         Rev 01
  4.         #endif

  5. #include <stdio.h>
  6. #include <stdlib.h>
  7. #include <malloc.h>
  8. #include <float.h>

  9. //返回文件指针
  10. FILE* filepointer(const char *file,const char *mode);
  11. /*
  12.         获取文件第一行项目名总数和最大项目名长度存入数组
  13.         注意里面有个temp数组大小为1024
  14. */
  15. void getitemsum(FILE* fp,int *itemsize);
  16. /*
  17.         获取文件第一行的项目名放入数组
  18.         注意里面有个temp数组大小为1024
  19. */
  20. void getitemname(FILE* fp,char *name,int num);
  21. /*
  22.         读取每一行数据,按格式分割后放入指定数组
  23.         注意里面有个temp数组大小为1024
  24. */
  25. void getdata(FILE* fp,double* max,double* min,double* avg,double* sum,int itemnu);
  26. int main(int argc,char *argv[])
  27. {
  28.         //第一个参数是原始文件,第二个参数是结果文件
  29.         FILE* sourcep=filepointer(argv[1],"rb");
  30.         FILE* resultp=filepointer(argv[2],"wb");
  31.        
  32.         //获取文件大小 itemsize[0]储存个数
  33.         static int itemsize[2];
  34.         getitemsum(sourcep,itemsize);
  35.         //printf("itemnum=%d maxsize=%d\n",itemsize[0],itemsize[1]);
  36.        
  37.         //开辟项目名空间并赋值
  38.         char (*itemname)[itemsize[1]]=(char(*)[itemsize[1]])calloc(itemsize[0]*itemsize[1],sizeof(char));
  39.         getitemname(sourcep,itemname[0],itemsize[1]);

  40.         //分配最大值,最小值,求和,平均值空间
  41.         double* max=(double*)calloc(itemsize[0],sizeof(double));
  42.         double* min=(double*)calloc(itemsize[0],sizeof(double));
  43.         double* avg=(double*)calloc(itemsize[0],sizeof(double));
  44.         double* sum=(double*)calloc(itemsize[0],sizeof(double));
  45.         //初始化最大值最小值
  46.         register int i=0;
  47.         for (i=0;i<itemsize[0];i++) *(min+i)=DBL_MAX, *(max+i)=DBL_MIN;
  48.         //获取相应数据
  49.         getdata(sourcep,max,min,avg,sum,itemsize[0]);
  50.         fprintf(resultp,"%2s  %-35s%-16s%-16s%-16s%-16s\n","Nu","Item","Max","Min","Sum","Avg");
  51.         for (i=1;i<itemsize[0];i++) fprintf(resultp,"%2d %-36s%-16.5lf%-16.5lf%-16.5lf%-16.5lf\n",i,*(itemname+i),max[i],min[i],sum[i],avg[i]);
  52.        
  53.         return 0;
  54. }
  55. FILE* filepointer(const char *file,const char *mode)
  56. {
  57.         FILE *fp;
  58.         if (!(fp = fopen(file,mode)))
  59.         {
  60.                 printf("open fail! %s\n",file);
  61.                 exit(-2);
  62.         }
  63.         return fp;
  64. }
  65. void getitemsum(FILE* fp,int *itemsize)
  66. {
  67.         char temp[1024]={"\0"};//临时储存一行数据
  68.         char *tep=temp;
  69.         register int i=0;//项目
  70.         register int m=0;//最大长度
  71.         register int t=0;//临时
  72.         fgets(temp,1024,fp);
  73.         for (;*tep;tep++)
  74.         {
  75.                 switch (*tep)
  76.                 {
  77.                         case ',': i++,t=0;break;//项目加一,长度归零
  78.                         case '\n': i++;*itemsize=i;*(itemsize+1)=m+1;return;//(m+1)给最后‘\0’留个位置,最后赋值退出
  79.                         default : t++;
  80.                         if (t>m) m=t;//始终保持最大长度
  81.                 }
  82.         }
  83. }
  84. void getitemname(FILE *fp,char *name,int num)
  85. {
  86.         rewind(fp);
  87.         char temp[1024]={"\0"};//临时储存一行数据
  88.         char *tep=temp;
  89.         register int i=0;//第一维
  90.         register int j=0;//第二维
  91.         fgets(temp,1024,fp);
  92.         for (;*tep;tep++)
  93.         {
  94.                 switch (*tep)
  95.                 {
  96.                         case ',':i++,j=0;break;
  97.                         case 10:break;//换行
  98.                         case 13:break;//回车
  99.                         default :*(name+i*num+j)=*tep;j++;
  100.                 }
  101.         }
  102. }
  103. void getdata(FILE* fp,double* max,double* min,double* avg,double* sum,int itemnu)
  104. {
  105.         rewind(fp);
  106.         char temp[1024]={"\0"};//临时储存一行数据
  107.         char *tep=temp;
  108.         register double fdata=0;//储存临时数据
  109.         register int i=1;//数组下标(空出第一列数据待后期使用)
  110.         register int count=0;//统计行数
  111.         fgets(tep,1024,fp);//跳过第一行项目数据
  112.         while ( !feof(fp) )
  113.         {
  114.                 count++;
  115.                 fgets(temp,1024,fp);
  116.                 i=1;
  117.                 tep=temp;
  118.                 while (*tep)
  119.                 {
  120.                         if (*(tep++) == ',')
  121.                         {
  122.                                 fdata=atof(tep);
  123.                                 if (fdata > *(max+i)) *(max+i)=fdata;
  124.                                 if (fdata < *(min+i)) *(min+i)=fdata;
  125.                                 *(sum+i) += fdata;
  126.                                 i++;
  127.                         }
  128.                 }
  129.         }
  130.         //处理最后一行因有可能出现不完整的数据所导致平均数据不准确
  131.         register int n;
  132.         if (i < itemnu)
  133.         {
  134.                 for (n=1;n<itemnu;n++)
  135.                 {
  136.                         if (n >= i) *(avg+n)=*(sum+n)/(count-1);
  137.                         else *(avg+n)=*(sum+n)/count;
  138.                 }
  139.         }
  140.         else for (n=1;n<itemnu;n++) *(avg+n)=*(sum+n)/count;
  141. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-19 19:31:48 | 显示全部楼层
本帖最后由 Cool_Breeze 于 2020-2-20 20:03 编辑

csv文档内容如下:
  1. time stamp, GPU Temperature (C) [0] (C), Junction Temperature (C) [0] (C), Mem Temperature (C) [0] (C), VR_GFX (C) [0] (C), VR_SOC (C) [0] (C), VR_MEM (C) [0] (C), VR_VDDCI (C) [0] (C), Liquid0 (C) [0] (C), Liquid1 (C) [0] (C), PLX (C) [0] (C), Min (C) [0] (C), GFXCLK Freq [0] (), PWM [0] (), FAN Speed [RPM] [0] (), Limit PPT0 (W) [0] (W), Value PPT0 (W) [0] (W), GFX Activity (%) [0] (%), PCIe Link Speed (GT/s) [0] (GT/s), PCIe Link Width [0] (), PCIe Correctable Error [0] (), PCIe Uncorrectable Error [0] (), PCIe Residency Gen 1 (%) [0] (%), PCIe Residency Gen 2 (%) [0] (%), PCIe Residency Gen 3 (%) [0] (%), PCIe Residency Gen 4 (%) [0] (%), PCIe Residency L0 (%) [0] (%), PCIe Residency L0s (%) [0] (%), PCIe Residency L1 (%) [0] (%), Fan PWM reading [%] [0] (%), mclk[0] (MHz), sclk[0] (MHz)
  2. 13:05:30.982, 44.76316, 44.90789, 44.00000, 32.00000, 34.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 41.50000, 796.31171, 0.00000, 170.52246, 165.00000, 32.85556, 0.00000, 8.00000, 16.00000, 0.00000, 0.00000, 0.00000, 0.00000, 100.00000, 0.00000, 100.00000, 0.00000, 0.00000, 0.00000, 876.0,  795.0
  3. 13:05:32.007, 45.06062, 45.18257, 44.00000, 32.00000, 34.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 41.59981, 795.48145, 0.00000, 170.52138, 165.00000, 33.75420, 5.10389, 8.00000, 16.00000, 0.00000, 0.00000, 30.00000, 0.00000, 70.00000, 0.00000, 100.00000, 0.00000, 0.00000, 0.00000, 876.0,  796.0
  4. 13:05:33.011, 44.37386, 44.41244, 44.00000, 32.00000, 34.20508, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 41.49569, 793.17987, 0.00000, 170.52162, 165.00000, 26.42430, 13.97832, 8.00000, 16.00000, 0.00000, 0.00000, 20.00000, 0.00000, 80.00000, 0.00000, 100.00000, 0.00000, 0.00000, 0.00000, 501.0,  772.0
  5. 13:05:34.018, 52.29150, 62.84890, 47.36978, 32.61133, 34.75348, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 45.68688, 1579.41577, 12.67473, 175.16473, 165.00000, 149.90047, 96.07919, 8.00000, 16.00000, 0.00000, 0.00000, 13.33333, 0.00000, 86.66666, 0.00000, 100.00000, 0.00000, 0.00000, 15.00000, 876.0,  1564.0
  6. 13:05:35.022, 55.09911, 66.63048, 52.26693, 33.59263, 35.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 47.97585, 1589.96985, 14.84375, 969.44452, 165.00000, 164.99840, 96.58652, 8.00000, 16.00000, 0.00000, 0.00000, 10.00000, 0.00000, 90.00000, 0.00000, 100.00000, 0.00000, 0.00000, 15.00000, 876.0,  1612.0
  7. 13:05:36.025, 55.81506, 67.23206, 54.00000, 34.48455, 35.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 48.74975, 1599.06433, 14.84375, 980.06689, 165.00000, 165.00172, 95.87738, 8.00000, 16.00000, 0.00000, 0.00000, 8.00000, 0.00000, 92.00000, 0.00000, 100.00000, 0.00000, 0.00000, 15.00000, 876.0,  1576.0
  8. 13:05:37.054, 56.04808, 67.51455, 54.00000, 35.00000, 35.38462, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 49.24310, 1584.18787, 14.84375, 670.29089, 165.00000, 164.99924, 97.36720, 8.00000, 16.00000, 0.00000, 0.00000, 6.66667, 0.00000, 93.33334, 0.00000, 100.00000, 0.00000, 0.00000, 15.00000, 876.0,  1589.0
  9. 13:05:38.071, 56.32507, 68.00413, 55.19534, 35.84062, 36.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 49.70335, 1580.33801, 14.97964, 543.21606, 165.00000, 164.94023, 97.04283, 8.00000, 16.00000, 0.00000, 0.00000, 5.79710, 0.00000, 94.20290, 0.00000, 100.00000, 0.00000, 0.00000, 15.00000, 876.0,  1580.0
  10. 13:05:39.076, 56.74975, 68.43750, 56.00000, 36.00000, 36.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 50.17928, 1591.44324, 15.47805, 630.68823, 165.00000, 165.00043, 95.92555, 8.00000, 16.00000, 0.00000, 0.00000, 5.06329, 0.00000, 94.93671, 0.00000, 100.00000, 0.00000, 0.00000, 16.00000, 876.0,  1563.0
  11. 13:05:40.082, 57.12053, 68.73981, 56.00000, 36.89761, 36.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 50.59045, 1573.54883, 15.98904, 767.91388, 165.00000, 165.00099, 98.35493, 8.00000, 16.00000, 0.00000, 0.00000, 4.49438, 0.00000, 95.50562, 0.00000, 100.00000, 0.00000, 0.00000, 16.00000, 876.0,  1572.0
  12. 13:05:41.085, 57.46012, 69.12787, 56.00000, 37.00000, 36.76171, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 50.92173, 1578.60803, 16.50296, 814.84827, 165.00000, 164.99835, 98.22034, 8.00000, 16.00000, 0.00000, 0.00000, 4.04040, 0.00000, 95.95959, 0.00000, 100.00000, 0.00000, 0.00000, 16.00000, 876.0,  1574.0
  13. 13:05:42.116, 57.74286, 69.49188, 56.00000, 37.62008, 37.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 51.34399, 1576.09644, 17.13105, 778.23401, 165.00000, 165.00224, 97.72848, 8.00000, 16.00000, 0.00000, 0.00000, 3.66972, 0.00000, 96.33028, 0.00000, 100.00000, 0.00000, 0.00000, 17.00000, 876.0,  1585.0
  14. 13:05:43.149, 58.10330, 69.82226, 57.30941, 38.00000, 37.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 51.73957, 1576.54688, 17.82505, 795.29156, 165.00000, 164.99890, 97.53688, 8.00000, 16.00000, 0.00000, 0.00000, 3.36134, 0.00000, 96.63866, 0.00000, 100.00000, 0.00000, 0.00000, 18.00000, 876.0,  1565.0
  15. 13:05:44.158, 58.45005, 70.16307, 58.00000, 38.37414, 37.31342, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 52.08913, 1588.35925, 18.52103, 859.73132, 165.00000, 164.99612, 96.32578, 8.00000, 16.00000, 0.00000, 0.00000, 3.12500, 0.00000, 96.87500, 0.00000, 100.00000, 0.00000, 0.00000, 19.00000, 876.0,  1608.0
  16. 13:05:45.195, 58.72681, 70.47998, 58.00000, 39.00000, 38.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 52.41504, 1577.53979, 19.21621, 889.65686, 165.00000, 165.00304, 97.21816, 8.00000, 16.00000, 0.00000, 0.00000, 2.89855, 0.00000, 97.10145, 0.00000, 100.00000, 0.00000, 0.00000, 20.00000, 876.0,  1571.0
  17. 13:05:46.229, 59.00315, 70.71370, 58.00000, 39.00000, 38.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 52.76162, 1575.31543, 19.95393, 907.09454, 165.00000, 165.00052, 97.43172, 8.00000, 16.00000, 0.00000, 0.00000, 2.72109, 0.00000, 97.27891, 0.00000, 100.00000, 0.00000, 0.00000, 20.00000, 876.0,  1564.0
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-12 23:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表