标题: 求解,请问怎么将读取文本的筛选变量提取出来? [打印本页]
作者: zzz19760225 时间: 2024-9-25 10:05 标题: 求解,请问怎么将读取文本的筛选变量提取出来?
本帖最后由 zzz19760225 于 2024-9-25 14:05 编辑
想按照序数s的if选择,对应后面的数值提出来。
1.txt- 勇士大闯关
-
-
- [开始游戏 ] [ ]
-
-
- [游戏说明 ]
-
-
- [退出游戏 ]
复制代码
- #include <stdio.h>
- #include <stdlib.h>
- #include <conio.h>
- #include <windows.h>
- #include <string.h>
- #include <graphics.h>
- #include <easyx.h>
- int main()
- {
- int s=1,m=1,n=0,n1=0,n2=0;
- char ch;
- FILE *file = fopen("1.txt", "r");
- while ((ch = fgetc(file)) != EOF)
- {
- n=n+1;
- if (ch == '[') {
- printf("%d,%d,%d,",s,m, n);
- n1=n;
- }
- if (ch == ']') {
- printf("%d\n", n);
- s=s+1;
- n2=n;
- }
- if (ch == '\n'){
- m=m+1;
- n = 0;
- }
-
- }
- if(s==1){
- printf("%d,%d,%d,%d,%d,",s,m,n,n1,n2);
- }
- fclose(file);
-
- system("pause>null");
- return 0;
- }
复制代码
结果:- 1,5,9,19
- 2,5,23,27
- 3,8,11,22
- 4,11,13,25
复制代码
这里只能显示四个已有信息,
需要s==1时,取第一行序数,对应的第一行内容也提取出来:复制代码
-----------------------------------------------------------------------------
是可以提取的。
在s变量下面取得需要的,然后再输出另外变量,这些另外变量就是需要的可用变量。- if( s == 2 ){
- //printf("%d,%d,%d,%d,\n",s,m,n1,n2);
- a1=s,a2=m,a3=n1,a4=n2;
- }
-
- printf("%d,%d,%d,%d,\n",a1,a2,a3,a4);
复制代码
作者: Five66 时间: 2024-9-25 20:49
这样子不?- #include <stdio.h>
- #include <stdlib.h>
- #include <conio.h>
- #include <windows.h>
- #include <string.h>
- #include <graphics.h>
- #include <easyx.h>
- int main()
- {
- int s=1,m=1,n=0,n1=0,n2=0;
- char ch;
-
- #define THECHSIZE 128
- char *ch2=(char *)malloc(THECHSIZE*THECHSIZE*sizeof(char));//分配空间存储每一行,最大为 THECHSIZE 行,每行 THECHSIZE 个字符
- if(!ch2)return 1;
- char *pp1=ch2,*pp2=ch2;
- size_t nnn;
-
- FILE *file = fopen("1.txt", "r");
- while ((ch = fgetc(file)) != EOF)
- {
- n=n+1;
- if (ch == '[') {
- sprintf(pp1,"%d,%d,%d,",s,m, n);
- nnn=strlen(pp1);
- printf("%d,%d,%d,",s,m, n);
- n1=n;
- }
- if (ch == ']') {
- pp1+=nnn;
- sprintf(pp1,"%d\n",n);
- pp2+=THECHSIZE;
- pp1=pp2;
- printf("%d\n", n);
- s=s+1;
- n2=n;
- }
- if (ch == '\n'){
- m=m+1;
- n = 0;
- }
-
- }
-
- s-=1;
- fclose(file);
-
- printf("\n请输入行n的值(1-%d):",s>THECHSIZE?THECHSIZE:s);
- scanf("%d",&n);
- if((n<=0) || (n>THECHSIZE) || (n>s)){
- printf("\n输入错误\n");
- }else{
- printf("\n第%d行的值为:\n%s\n",n,ch2+(n-1)*THECHSIZE);
- }
-
- free(ch2);
- return 0;
- }
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |