C语言请教一个程序.看不懂!!!!

来源:百度知道 编辑:UC知道 时间:2024/07/12 17:03:21
下列程序的执行结果是
#include<stdio.h>
#include<ctype.h>
long fun(char s[])
{ long n; int sign;
for(;isspace(*s);s++);
sign=(*s==’-‘)? -1:1;
if(*s==’+‘ ∣∣ *s==’-‘)s++;
for(n=0;isdigit(*s);s++)
n=10 * n+(*s-‘0’);
return sign * n;
}
main()
{
printf(“%ld”,fun(“1234abc”));
}
请问程序中for(;isspace(*s);s++); 是什么意思?
isspace 这个没有定义啊 从哪来的咯?
还有 for(n=0;isdigit(*s);s++) 这个也不知道干什么用?
迷糊了.烦请分析下这个程序

isspace,isdigit都是ctype里定义的。用来判断一个字符是空白或者数字。这些函数你可以自己写一个来判断。

for(;isspace(*s);s++); //跳过空格
sign=(*s==’-‘)? -1:1; //如果有"-",将符号位定为-1
if(*s==’+‘ ∣∣ *s==’-‘)s++;//跳过多余的+,-号
for(n=0;isdigit(*s);s++)
n=10 * n+(*s-‘0’);//如果是数字,将其保存到n中。
return sign * n; //返回带符号的整数
}

程序运行的结果应该是数字1234

for(;isspace(*s);s++); isspace判断是不是空格
这一句的意思是去掉字符串左边的空格

for(n=0;isdigit(*s);s++) ;isdigit判断是不是数字

整个程序的意思是提取字符串左边的连续数字字符, 并将数字字符转化成整数!