C语言 删除字符串s的所有数字字符

#include <ctype.h>
#include <stdio.h>

char* dele(char *s)
{
int n=0,i;
for(i=0;s[i];i++)
if(!isdigit(s[i]))
s[n++]=s[i];
s[n]=0;
return s;
}

为什么条件if 要s[i]<'0'||s[i]>'9'啊 不应该相反吗 请在解释下 s[0]=0或者'\0'什么意思啊 初学者 请详细解释下 谢谢。。。
if(!isdigit(s[i])) 什么意思 有实际用吗。。

s[i]<'0' || s[i]>'9'的意思是s[i]这个字符不是'0'~'9'之内的字符,即非数字字符。

你这个dele函数的意思是剔除字符串里的数字字符,那么判断为非数字字符时,把s[i]放入s[n]。
字符’\0'是字符串结束符,有了它才能用printf的%s来输出这个字符串的有效内容,’\0'的ascii码值就是0,所以s[n]=0等同于s[n]='\0'。

isdigit判断一个字符是不是数字字符,逻辑就是你上面问的s[i]>='0'&&s[i]<='9'。那么if(!isdigit(s[i]))的意思是如果s[i]不是数字字符的意思,等同于if(s[i]<'0' || s[i]>'9')
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-05-09
if(!isdigit(s[i])) 中间的这个isdigit(s[i])是判断s【i】是不是为数字,如果为数字返回非o值,比如s【i】是一个数字,isdigit(s[i])就返回一个非0,!isdigit(s[i])就是是0值,if后面的语句就不执行,就相当于数字不存到新的数组里面s【n】,达到了删除的目的
第2个回答  2013-05-09
isdigit判断该字符是否为数字,是数字返回非0。
=0或’\0’为字符串结束符,一般字符串都有结束符,不然系统认不了
isdigit判断该字符是否为数字,是数字返回非0。
=0或’\0’为字符串结束符,一般字符串都有结束符,不然系统认不了
第3个回答  2013-05-09
你是要删除数字字符,所以if条件中判断不是数字字符就保存起来,‘\0'是字符的结束符,如果没有,会出现乱码
isdigit是ctype.h这个头文件里的一个库函数,表示判断字符是否是0-9的数字
第4个回答  2013-05-09
原题意思应该是当s[i]<'0'||s[i]>'9'(即s[i]不是数字时),将它重新存起来(s[n++])
s[n]=0或'\0'意思是结束,即从这个字符开始到后面不编译出来(无内存空间、数据)
相似回答