用C语言中的strtol逐行读取文本文件
好的,我有一个函数,它找到一个文件中所有数字的平均值:用C语言中的strtol逐行读取文本文件,c,text-files,average,strtol,line-by-line,C,Text Files,Average,Strtol,Line By Line,好的,我有一个函数,它找到一个文件中所有数字的平均值: float averageOfNumbers(FILE *fp_in) { int n=0,S=0; char red[1024];char *ptr; int p_a_h; float sr; while(!feof(fp_in)){ if(fgets(red,1024,fp_in)!=NULL){ ptr =red; while(p_a_h = strtol(pt
float averageOfNumbers(FILE *fp_in)
{
int n=0,S=0;
char red[1024];char *ptr;
int p_a_h;
float sr;
while(!feof(fp_in)){
if(fgets(red,1024,fp_in)!=NULL){
ptr =red;
while(p_a_h = strtol(ptr, &ptr, 10)){
if((p_a_h>0&&S>INT_MAX-p_a_h)||(p_a_h<0&&S<INT_MIN-p_a_h)){
printf("OVERFLOW\n");
break;
}
else{
S=p_a_h+S;
n++;}
}
}
}
sr=S/n;
return sr;
}
平均值应为:310422在<代码>如果条件中添加额外检查
p_a_h==0 && (strlen(ptr)>1 || (strlen(ptr)==1 && ptr[0]!='0'))
如果转换无效(如果字符串包含非数字字符),则strtol
返回0L
。但如果实际字符串包含0
,则仅检查此项也会跳过。剩下的我自己去理解。以上。
p_a_h==0 && (strlen(ptr)>1 || (strlen(ptr)==1 && ptr[0]!='0'))