找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 8710|回复: 1

求解,请问怎么将读取文本的筛选变量提取出来?

[复制链接]
发表于 2024-9-25 10:05:22 | 显示全部楼层 |阅读模式
本帖最后由 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);
复制代码
发表于 2024-9-25 20:49:48 | 显示全部楼层
这样子不?

  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. }
复制代码

评分

参与人数 1技术 +1 收起 理由
zzz19760225 + 1 对,就是这个选择结果。

查看全部评分

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

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 01:12 , Processed in 0.018760 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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