中的数字,并且附值给一个变量.
我的做法:先用getc一个一个的把文本文件里面的内容当成字符形式读入并分开把数字附到一个数组里面,但是这样存储
到数组里的是字符形式的数字,然后我再用ASICⅡ代码把字符形式的数组,转化成了INT型的数组,然后在进行附值,但是这
样好象很笨,而且也比较麻烦.而且在把数字和字母分开的时候,我是这样做的,判断读入的字符的ASIC代码,不在数字范围
内的就输出空格,这样的结果是再把此字符型数组转化为INT型时,就得把空格转化为一个负数(比如-1)以区别其他正整数
和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;
}
}
}
----------------解决方案--------------------------------------------------------
这样不行啊,比如文本文件是这样的:abc123def456
要提出的是 x=123 和y=456 按照你那样就变成了 x=123456 了吧
----------------解决方案--------------------------------------------------------
汗
还好我看懂了你的题目.
----------------解决方案--------------------------------------------------------
你的方法行不通吧?
而且我看不懂这个:
if(sum)
{
data[k++]=sum;
sum=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!怎么回事啊
----------------解决方案--------------------------------------------------------
汗一个
自己看看,到底怎么错了.
不过我的也有点小问题
就是最后还要处理一个数
在循环后面加上
if(sum)
{
data[k++]=sum;
sum=0;
}
----------------解决方案--------------------------------------------------------