Board logo

标题: 求解,请问怎么将读取文本的筛选变量提取出来? [打印本页]

作者: zzz19760225    时间: 2024-9-25 10:05     标题: 求解,请问怎么将读取文本的筛选变量提取出来?

本帖最后由 zzz19760225 于 2024-9-25 14:05 编辑

想按照序数s的if选择,对应后面的数值提出来。
1.txt
  1.           勇士大闯关
  2.         [开始游戏 ]   [   ]
  3.           [游戏说明  ]
  4.             [退出游戏   ]
复制代码
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <conio.h>
  4. #include <windows.h>
  5. #include <string.h>
  6. #include <graphics.h>
  7. #include <easyx.h>
  8. int main()
  9. {
  10.     int s=1,m=1,n=0,n1=0,n2=0;
  11.     char ch;
  12.     FILE *file = fopen("1.txt", "r");
  13.     while ((ch = fgetc(file)) != EOF)
  14. {
  15.         n=n+1;
  16.         if (ch == '[') {
  17.                  printf("%d,%d,%d,",s,m, n);
  18.              n1=n;
  19. }
  20.         if (ch == ']') {
  21.              printf("%d\n", n);   
  22.                  s=s+1;
  23.                  n2=n;
  24.                  }
  25.         if (ch == '\n'){
  26.              m=m+1;               
  27.              n = 0;
  28. }
  29.     }
  30. if(s==1){
  31.     printf("%d,%d,%d,%d,%d,",s,m,n,n1,n2);
  32. }
  33.     fclose(file);
  34.     system("pause>null");
  35. return 0;
  36. }
复制代码
结果:
  1. 1,5,9,19
  2. 2,5,23,27
  3. 3,8,11,22
  4. 4,11,13,25
复制代码
这里只能显示四个已有信息,
需要s==1时,取第一行序数,对应的第一行内容也提取出来:
  1. 1,5,9,19
复制代码
-----------------------------------------------------------------------------
是可以提取的。

在s变量下面取得需要的,然后再输出另外变量,这些另外变量就是需要的可用变量。
  1.                               if( s == 2 ){
  2.                                             //printf("%d,%d,%d,%d,\n",s,m,n1,n2);
  3. a1=s,a2=m,a3=n1,a4=n2;
  4.   }
  5.     printf("%d,%d,%d,%d,\n",a1,a2,a3,a4);
复制代码

作者: Five66    时间: 2024-9-25 20:49

这样子不?
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <conio.h>
  4. #include <windows.h>
  5. #include <string.h>
  6. #include <graphics.h>
  7. #include <easyx.h>
  8. int main()
  9. {
  10.     int s=1,m=1,n=0,n1=0,n2=0;
  11.     char ch;
  12. #define THECHSIZE 128
  13. char *ch2=(char *)malloc(THECHSIZE*THECHSIZE*sizeof(char));//分配空间存储每一行,最大为 THECHSIZE 行,每行 THECHSIZE 个字符
  14. if(!ch2)return 1;
  15. char *pp1=ch2,*pp2=ch2;
  16. size_t nnn;
  17.     FILE *file = fopen("1.txt", "r");
  18.     while ((ch = fgetc(file)) != EOF)
  19. {
  20.         n=n+1;
  21.         if (ch == '[') {
  22.               sprintf(pp1,"%d,%d,%d,",s,m, n);
  23.                 nnn=strlen(pp1);
  24.                 printf("%d,%d,%d,",s,m, n);
  25.              n1=n;
  26. }
  27.         if (ch == ']') {
  28.                 pp1+=nnn;
  29.                    sprintf(pp1,"%d\n",n);
  30.                    pp2+=THECHSIZE;
  31.                    pp1=pp2;
  32.                    printf("%d\n", n);
  33.                  s=s+1;
  34.                  n2=n;
  35.                  }
  36.         if (ch == '\n'){
  37.              m=m+1;               
  38.              n = 0;
  39. }
  40.     }
  41. s-=1;
  42. fclose(file);
  43. printf("\n请输入行n的值(1-%d):",s>THECHSIZE?THECHSIZE:s);
  44. scanf("%d",&n);
  45. if((n<=0) || (n>THECHSIZE) || (n>s)){
  46. printf("\n输入错误\n");
  47. }else{
  48. printf("\n第%d行的值为:\n%s\n",n,ch2+(n-1)*THECHSIZE);
  49. }
  50. free(ch2);
  51. return 0;
  52. }
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2