免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1394 | 回复: 7
打印 上一主题 下一主题

判断字符,数字个数! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-09-11 14:56 |只看该作者 |正序浏览
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

int main(int argc, char *argv[])
{
    char s[6]="abc de";
    char *d;
    d=s;
    int x=0, y=0, z=0, a=0;
    while(*d != '\0'){
        if (isalnum(*d)){
            if (isalpha(*d))
              x++;
            else
              y++;
        }else  if (isspace(*d))
            z++;
        else   
            a++;
        ++d;
    }
    fprintf(stderr, "char=%d\nint=%d\nspace=%d\nother=%d\n", x, y, z, a);
    return 0;
}


奇怪的输出!!每次还都不一样! 不是知道是不是 ++d那出了问题

[ 本帖最后由 新手上路2世 于 2006-9-11 15:10 编辑 ]

论坛徽章:
0
8 [报告]
发表于 2006-09-11 15:35 |只看该作者
是啊1 刚才给傻掉了!

论坛徽章:
0
7 [报告]
发表于 2006-09-11 15:28 |只看该作者
数组定义的太小了。把'\0'舍掉了。

论坛徽章:
0
6 [报告]
发表于 2006-09-11 15:13 |只看该作者
看样子是定义的数组的问题!
如果定义成 char s[]="abcd1435"
就没问题了!

论坛徽章:
0
5 [报告]
发表于 2006-09-11 15:13 |只看该作者
char s[6]="abc de";
...
应该至少是s[7],原因自己想想

论坛徽章:
0
4 [报告]
发表于 2006-09-11 15:07 |只看该作者
哦! 笔误一个,多谢了!但是改过来以后的输出还是不定的!

论坛徽章:
0
3 [报告]
发表于 2006-09-11 15:06 |只看该作者
应该是
while(*d!='\0')
吧?

论坛徽章:
0
2 [报告]
发表于 2006-09-11 15:02 |只看该作者
/*  while(*d != '\n') */
你的'\n'在哪里
  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP