| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1057 人关注过本帖
标题:[新手求助]怎么查找一个文本中的特定变量的值?
只看楼主 加入收藏
zhuhang
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-8-16
收藏
 问题点数:0 回复次数:9 
[新手求助]怎么查找一个文本中的特定变量的值?

我是用一个软件运行后得到一个文本
文本是由如下这样一些内容组成(下面的只是其中一段,其余的是类似的重复的文本,只是我需要获取的值不一样)
现在就是要提取出 P T2 SD的值,并将他们分别赋给某个数组
本人C语言基础比较差,弄了好几天了,也没弄好,请大家帮帮忙,给个思路/提示也行... 谢谢了




示例文本内容:


Dataset :
D:/Bruker/TOPSPIN/data/STOCSY/nmr/Human Urine/6/pdata/2
AREA fit :
I[t]= P*exp(-t/T2)

128 points for Integral 1, Integral Region from 0.000 to 0.000 ppm
Results Comp. 1

P = 1.277e+000
T2 = 13.567s
SD = 6.446e-002

tau ppm integral intensity

674.000m 4.000 3.3837e+008 eliminated
921.000m 4.000 3.3533e+008 eliminated
1.168s 4.000 3.3166e+008 eliminated
1.415s 4.000 3.3144e+008 eliminated
1.662s 4.000 3.2925e+008 eliminated
1.909s 4.000 3.2954e+008 eliminated
2.156s 4.000 3.3067e+008 eliminated
2.403s 4.000 3.2544e+008 eliminated
2.649s 4.000 3.2677e+008 eliminated
2.896s 4.000 3.2613e+008 eliminated
3.143s 4.000 3.2473e+008 eliminated
3.390s 4.000 3.1975e+008 eliminated
3.637s 4.000 3.1791e+008 eliminated
3.884s 4.000 3.1967e+008 eliminated
4.131s 4.000 3.099e+008 eliminated
4.378s 4.000 3.0408e+008 eliminated
4.625s 4.000 3.0332e+008 eliminated
4.872s 4.000 3.0542e+008 eliminated
5.118s 4.000 3.0375e+008 eliminated

搜索更多相关主题的帖子: 文本 变量 TOPSPIN Urine 
2007-08-16 14:50
noah_shi
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2007-8-14
收藏
得分:0 

思路:
逐行读入文本数据,分析是否含有字段“P =”,若有,则提取后面的数据。

[此贴子已经被作者于2007-8-16 15:00:33编辑过]


2007-08-16 14:59
zhuhang
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-8-16
收藏
得分:0 
能否详细点 用到的函数

我C真的很菜...
2007-08-16 15:04
limeng_HOHO
Rank: 2
来 自:上海
等 级:论坛游民
帖 子:49
专家分:50
注 册:2007-7-16
收藏
得分:0 

FILE *fp;
if(fp=fopen("文本所在路径","打开方式")!=NULL)
{
exit(1);
}
else
{
相应操作;
}

几个可能会用到的函数:
char* gets(char* buf,int n,FILE* fp) //从文件指针所在位置读入n个字符到数组buf[]中;
double atof(char*) //将字符串转换成双精度数值;
int strncmp(char* s,char* t,n) //比较字符串s和t的前n个字符
以上函数都在<string.h>头文件中


世界并不美丽 然而又因此而美丽
2007-08-16 17:10
zhuhang
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-8-16
收藏
得分:0 
以下是引用noah_shi在2007-8-16 14:59:50的发言:

思路:
逐行读入文本数据,分析是否含有字段“P =”,若有,则提取后面的数据。



如何"提取后面的数据"??
修改指针的位置么? 具体怎么操作啊

2007-08-16 21:15
zhuhang
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-8-16
收藏
得分:0 
回复:(zhuhang)[新手求助]怎么查找一个文本中的特定...

自己顶一下,继续求助~

2007-08-17 09:38
雨中飞燕
Rank: 3Rank: 3
等 级:禁止访问
威 望:8
帖 子:2200
专家分:0
注 册:2007-8-9
收藏
得分:0 
哦,对内容进行行拆分,用回车换行标志\r\n
保存到char str[MAXLINE][100];里去(或者用滚动数组也可)
然后循环提取sscanf(str[n],"%s = %s", str1, str2);
2007-08-17 09:53
noah_shi
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2007-8-14
收藏
得分:0 

大概得写了下,思路就是这样的。具体的考虑关键字匹配的优化,自己做吧,比如关键字“p = ”,p的大小写兼容和空格过滤,以及取出的文本文件里的大小写兼容和空格过滤。


#include <iostream.h>
#include <fstream.h>
#include <string.h>
#define MAX_LEN 1024

void main()
{
char buf[MAX_LEN];
char *ret;
int i = 0;
ifstream in(\"1.txt\");
while(!in.eof())
{
in.getline(buf,MAX_LEN);
char temp[] = \"P=\"; //关键字设置
if(strstr(buf,temp)) //是否找到关键字\"P=\"
{
i = 0;
while(buf[i]!='\0')
{
if(buf[i] == temp[0] && buf[i+1] == temp[1])
{
ret = &buf[i+2];
cout<<ret;
return;
}
}

}
}
}


2007-08-17 11:09
rocketabc
Rank: 1
等 级:新手上路
帖 子:100
专家分:0
注 册:2006-7-6
收藏
得分:0 

#include <stdio.h>
#include <conio.h>
int main()
{
FILE *fp;

fp=fopen("d:\\123.txt","r");

while(!feof(fp))
{

if(fgetc(fp)=='p'&&fgetc(fp)=='=')
/*这里写取 "p="后的值的算法*/
printf("p=");
fseek(fp,-1,SEEK_CUR);
if(fgetc(fp)=='p'&&fgetc(fp)=='=')
printf("p=");
}
fclose(fp);
getch();
return 0;
}
我只写了 'p='的做法
这样做可能要简单点


兴趣和爱好是我追求的方向
2007-08-17 12:21
zhuhang
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-8-16
收藏
得分:0 
回复:(zhuhang)[新手求助]怎么查找一个文本中的特定...

谢谢楼上的各位,在你们的帮助之下已经解决了~

2007-08-20 08:45
快速回复:[新手求助]怎么查找一个文本中的特定变量的值?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016329 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved