| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1787 人关注过本帖
标题:[求助]从一个包含有字母和数字的文本文件读入INT型变量
只看楼主 加入收藏
bitcai
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2007-9-23
收藏
 问题点数:0 回复次数:12 
[求助]从一个包含有字母和数字的文本文件读入INT型变量
问题:大概意思就是说,有一个文本文件,里面有字母有数字(全是整型而且没有负数),也有可能有有空格等,要求是提出其

中的数字,并且附值给一个变量.



我的做法:先用getc一个一个的把文本文件里面的内容当成字符形式读入并分开把数字附到一个数组里面,但是这样存储

到数组里的是字符形式的数字,然后我再用ASICⅡ代码把字符形式的数组,转化成了INT型的数组,然后在进行附值,但是这

样好象很笨,而且也比较麻烦.而且在把数字和字母分开的时候,我是这样做的,判断读入的字符的ASIC代码,不在数字范围

内的就输出空格,这样的结果是再把此字符型数组转化为INT型时,就得把空格转化为一个负数(比如-1)以区别其他正整数

和0.



请问:有没有更好的方法实现这个功能.
搜索更多相关主题的帖子: INT型 数字 变量 文本文件 字母 
2007-10-21 20:51
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
sum=0;
for(i=0;i<strlen(str);i++)
{
if(str[i]>='0'&&str[i]<='9')
{
sum=sum*10+str[i]-'0';
}
else
{
if(sum)
{
data[k++]=sum;
sum=0;
}
}
}

倚天照海花无数,流水高山心自知。
2007-10-21 21:00
bitcai
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2007-9-23
收藏
得分:0 

这样不行啊,比如文本文件是这样的:abc123def456

要提出的是 x=123 和y=456 按照你那样就变成了 x=123456 了吧


2007-10-21 21:44
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 


还好我看懂了你的题目.


倚天照海花无数,流水高山心自知。
2007-10-21 22:00
bitcai
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2007-9-23
收藏
得分:0 
你的方法行不通吧?
而且我看不懂这个:
if(sum)
{
data[k++]=sum;
sum=0;
}

2007-10-21 22:06
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
把数存起来
再重新记数.

倚天照海花无数,流水高山心自知。
2007-10-21 22:07
bitcai
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2007-9-23
收藏
得分:0 
哦,我去试试

2007-10-21 22:31
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 

早就应该先试试再来说了.
等下把结果发上来给我看看吧

倚天照海花无数,流水高山心自知。
2007-10-21 22:48
bitcai
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2007-9-23
收藏
得分:0 

这个是我按照你的方法写的:
[CODE]main()
{
int *fpold,*fpnew;
int sum,i,k;
int data[100];
char str[100];
fpold=fopen("old.txt","a+");
fpnew=fopen("new.txt","w+");
sum=0;
k=0;
for(i=0;i<strlen(str);i++)
{
fscanf(fpold,"%c ",&str[i]);
if(str[i]>='0'&&str[i]<='9')
{
sum=sum*10+str[i]-'0';
}
else
{
if(sum)
{
data[k++]=sum;
sum=0;
}
}
}
fprintf(fpnew,"%d ",sum);
fclose(fpold);
fclose(fpnew);
getch();
}[/CODE]

old.txt文本文件内容就只有:abc123def456
但是这个程序运行后new.txt上面只有个0!怎么回事啊


2007-10-21 23:31
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
汗一个
自己看看,到底怎么错了.
不过我的也有点小问题
就是最后还要处理一个数
在循环后面加上
if(sum)
{
data[k++]=sum;
sum=0;
}

倚天照海花无数,流水高山心自知。
2007-10-22 09:46
快速回复:[求助]从一个包含有字母和数字的文本文件读入INT型变量
数据加载中...
 
   



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

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