| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 759 人关注过本帖
标题:[ 指针 ] 关于统计字符串里的各种元素--------很不理解一个细节~
只看楼主 加入收藏
刘定邦
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:687
专家分:1570
注 册:2010-9-21
收藏
得分:0 
用SCANF 输入字符的话。好像是遇空格就认为接束了。而用GETCHAR()是遇回车才结束。不知道有没有记错。
2011-04-13 08:46
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:0 
LS正解。 scanf以空格,TAB,回车作为结束标识。

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-04-13 10:30
死不了的恨
Rank: 2
来 自:淮北
等 级:论坛游民
帖 子:16
专家分:54
注 册:2011-4-11
收藏
得分:20 
将scanf("%s",p);
语句改为gets(p);
因为用scanf()语句来接收字符串时,编译器会将空格和回车符作为同等级别处理,即无论你输入的是空格还是回车,它都当做回车符处理。
例如,用scanf()语句接收一个连续的不带空格的字符串ThisisaCprogram!100时;运行结果如下:
2//大写字母个数
13//小写字母个数
0//空格个数,循环语句不接收空格符,遇空格符就跳出循环
3//数字个数
1//其他字符个数
改程序运行结果就完全正确。
但如果中间加空格符,就会出错。

天行鉴,君子以自强不息。
2011-04-13 11:29
thunder_2011
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:31
专家分:100
注 册:2011-4-11
收藏
得分:0 
原因楼上各位已经解释很清楚了,我再补充一点

如果坚持要用scanf:

scanf("%[^\n]",p);  

这样应该就可以了


2011-04-13 15:59
帅的让人抽
Rank: 4
来 自:安徽
等 级:业余侠客
帖 子:94
专家分:224
注 册:2010-9-30
收藏
得分:0 
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
int main()
{
    int Word=0,word=0,space=0,number=0,others=0;
    char *p;
    int i;    
    p=(char *)malloc(sizeof(char)*50);
    if(p==NULL) return 0;
    printf("请输入一段文字:");
    gets(p);  /* 朋友说要用getchar()完成输入, 为什么呢? 很费解? 百度看不懂*/
    for(i=0;*(p+i)!='\0';i++)
    {
        if((*(p+i)>='A')&&(*(p+i)<='Z'))
            Word++;
        else if((*(p+i)>='a')&&(*(p+i)<='z'))
            word++;
        else if((*(p+i)>='0')&&(*(p+i)<='9'))
            number++;
        else if((*(p+i)==32))  /* 判断条件没错吧,为什么就是space始终是初始化的结果*/
            space++;
        else
            others++;   /* 这个很调皮,输入的时候有时候突然能统计上,突然就统计不上了*/
    }
    printf("%d\n%d\n%d\n%d\n%d\n",Word,word,space,number,others);
    free(p);
    return 0;
}

你可以用gets函数。
在使用scanf()语句的时候,并且是以%s的形式读取一字符串的话,空格会截断字符串。
比如,你用scanf输入多个字符串时,以空格作为分割符。
输入一个字符串,如果含有空格,空格后面的字符串会保留在缓冲区。

樱花下落的速度依然是秒速五厘米,即使发了一千次短信,
心与心之间也只能靠近一厘米……
2011-04-13 18:51
快速回复:[ 指针 ] 关于统计字符串里的各种元素--------很不理解一个细节~
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015000 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved