| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 511 人关注过本帖
标题:为什么不能检测N之后的字母(而且只出现在第三行)
只看楼主 加入收藏
kakashiljf
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-5-10
收藏
 问题点数:0 回复次数:3 
为什么不能检测N之后的字母(而且只出现在第三行)
最近碰到一个问题,就是统计字母出现次数的时候,第三行并且是N之后的字母不能被统计到,我试过如果是在其他行出现的话,是没有问题的,只有在第三行出现并且是N之后的字母才会被“忽略”掉,想了很久都不能明白,希望大家能帮我一下。具体为以下(编程功力不深,不知道是哪里出问题了,个人觉得很“诡异”阿,为什么是第三行才会这样,我是试过六行,也是只有第三行的文本的N以后的字母会被忽略掉):
[code]/*题目:编写一个程序,该程序输入若干行文本然后用函数strchr来确定字母表中的每一个字母在这些文本中出现的总次数,大写字母和小写字母该统计到一起。将每个字母出现的总次数存储到一个数组里。按照列表的形式将这些数值打印出来。*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define L 100

int main()
{
    int i;
    int count = 0;
    int num;
    int number = 0;
    int t = 0;
    int times[ 26 ];

        /*根据输入的数字来决定字符数组的行*/
    printf ( "input the number of lines:\n" );
    char sentences[ scanf ( "%d", &num ) ][ L ];
        
    char temp[ L ];
    char charater = 'A';
    char *searchPtr;

    printf ( "input your sentences:\n" );
        /*为了把这个换行的放在temp数组,从而不影响后面的字符串录入*/
    gets ( temp );

    for ( i = 0; i < num; i++ ) {
        gets ( sentences[ i ] );
    }

    while ( number < 26 ) {
                /*首先统计大写的字母,比如'A'*/
        for ( i = 0; i < num; i++ ) {
            searchPtr = strchr ( sentences[ i ], charater );
                        /*如果返回指针不是NULL,说明找到字母*/
            while ( searchPtr != NULL ) {
                count++;
                                /*指针向前一步,然后继续找*/
                searchPtr = strchr ( searchPtr + 1, charater );
            }
        }
        /*然后就是小写的字母,即'A'*/
        for ( i = 0; i < num; i++ ) {
            searchPtr = strchr ( sentences[ i ], charater + 32 );
            while ( searchPtr != NULL ) {
                count++;
                searchPtr = strchr ( searchPtr + 1, charater + 32 );
            }
        }

        times[ t ] = count;
                /*打印结果*/
        printf ( "%c/%c        %d\n", charater, charater + 32, times[ t ] );
        t++;
                /*字母往后一个*/
        charater++;
        number++;
        count = 0;
    }

    return 0;
}/code]
运行结果如下:
图片附件: 游客没有浏览图片的权限,请 登录注册

图片附件: 游客没有浏览图片的权限,请 登录注册
搜索更多相关主题的帖子: 检测 字母 
2009-10-19 13:28
UserYuH
Rank: 12Rank: 12Rank: 12
来 自:毅华
等 级:火箭侠
威 望:8
帖 子:720
专家分:3300
注 册:2009-8-10
收藏
得分:0 
char sentences[ scanf ( "%d", &num ) ][ L ]; /* 这样定义有问题,scanf函数反回0和1的值,失败或成功,如你输入5,成功scanf函数反回1,就是sentences[1][L],而不是你想要的sentences[5][L]。只要数组定义对就没问题了。*/

努力—前进—变老—退休—入土
2009-10-19 14:03
kakashiljf
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-5-10
收藏
得分:0 
我去试试,忽略这个问题了……成功了回来再感谢
2009-10-19 14:07
kakashiljf
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-5-10
收藏
得分:0 
成功……问题果然出在这里,非常感谢!!!不过还是不明白为什么是第三行才会出现“忽略不计”的问题……自己想想,能明白的话再来总结一下
2009-10-19 22:51
快速回复:为什么不能检测N之后的字母(而且只出现在第三行)
数据加载中...
 
   



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

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