新手一枚,求高手告知这段代码的具体意思。
int Read_Num(FILE *fp)
{
char temp[8];
int i=0;
int stop=0;
char ch;
while(!stop)
{
ch=fgetc(fp);
if(ch==EOF)
break;
while(ch>=””0″”&&ch<=””9″”)
{
stop=1;
temp[i++]=ch;
ch=fgetc(fp);
}
}
temp[i]=0;
return atol(temp);
}
int Read_Num(FILE *fp)
{
char temp[8];
int i=0;
int stop=0;
char ch;
while(!stop)
{
ch=fgetc(fp);
if(ch==EOF)
break;
while(ch>=””0″”&&ch<=””9″”)
{
stop=1;
temp[i++]=ch;
ch=fgetc(fp);
}
}
temp[i]=0;
return atol(temp);
}
解决方案:40分
注释写在代码里了,相当于从一个文件里提取出碰到的第一组的连续的数字
例如一个文件:
asd2358395bb
12312asd
运行结果:提取出的是2358395
例如一个文件:
asd2358395bb
12312asd
运行结果:提取出的是2358395
#include <iostream>
using namespace std;
int Read_Num(FILE *fp)
{
char temp[8]; //用来存储读到的数字字符
int i=0; //用来记录当前字符数组的位置
int stop=0; //标志能否读到了数字(仅读一组数字)
char ch; //记录当前读到的字符
while(!stop)
{
ch=fgetc(fp); //读取一个字符
if(ch==EOF) //判断能否读到了文件尾
break;
while(ch>=""0""&&ch<=""9"")//读到的能否是一个数字字符
{
stop=1;//标志位置1
temp[i++]=ch;//当前数字字符存到数组里,然后i+1
ch=fgetc(fp);//继续读取字符
}
}
temp[i]=0;//在当前数组最后填0
return atol(temp);//将字符串转为长整数并返回
}
int main()
{
FILE *fp;
fp = fopen("E:\out_1.txt", "r");
cout << Read_Num(fp) << endl;
system("pause");
return 0;
}