| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 498 人关注过本帖
标题:请求经验丰富的高手帮我看看代码的 意思
只看楼主 加入收藏
守候幸福
Rank: 2
来 自:井冈山大学
等 级:论坛游民
帖 子:16
专家分:10
注 册:2013-3-24
结帖率:60%
收藏
已结贴  问题点数:20 回复次数:4 
请求经验丰富的高手帮我看看代码的 意思
从键盘输入字符,计算所输入的字符的个数与输入的行数并将计算结果输出到屏幕,以感叹号“!”作为输入的结束符
#include<stdio.h>
#include<string.h>
#define END '!'
#define MAX 1200
void wordinput(char str[]);
void countwords(char str[]);
void wordoutput(int lines,int number);
int lines=0,number=0;
main()
{
    char strings[MAX+1];
    wordinput(strings);
    countwords(strings);
    wordoutput(lines,number);
}
/*将输入的字符保存到数组中*/
void wordinput(char str[])
{
    char c;
    int i=0;
    c=getchar();
    while(i<MAX-1&&c!=END)
    {
        str[i]=c;
        c=getchar();
        i++;
    }
    if(str[i-1]=='\n')/*对数组的最后一个元素的值进行处理*/   这一部分请求能够给我一个详细解析一下???
        str[i]='\0';
    else
    {
        str[i]='\n';
        str[i+1]='\0';
    }
}
/*统计字符的个数及行数*/
void countwords(char str[])
{
    int i=0;
    char c;
    c=str[i];
    while(c!='\0')
    {
        if(c=='\n')
            lines++;
        else
            number++;
        i++;
        c=str[i];
    }
}
/*将统计结果输出*/
void wordoutput(int lines,int number)
{
    printf("the lines of string =%d\n",lines);
    printf("the words of string =%d\n",number);
}

搜索更多相关主题的帖子: void include number 感叹号 
2013-04-17 21:18
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
收藏
得分:5 
代码中每个函数的意思不都写了注释了么?还要什么意思

三十年河东,三十年河西,莫欺少年穷!
2013-04-18 10:57
pauljames
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:千里冰封
威 望:9
帖 子:1555
专家分:10000
注 册:2011-5-8
收藏
得分:5 
    if(str[i-1]=='\n')/*对数组的最后一个元素的值进行处理*/   这一部分请求能够给我一个详细解析一下???
        str[i]='\0';

作为键盘输入,敲回车的时候会带入一个'\n',而字符数组一般以'\0'作为结束标志,因此需要处理一下

经常不在线不能及时回复短消息,如有c/单片机/运动控制/数据采集等方面的项目难题可加qq1921826084。
2013-04-19 06:46
wanqiuyan08
Rank: 2
等 级:论坛游民
帖 子:12
专家分:30
注 册:2013-4-17
收藏
得分:5 
以下是引用pauljames在2013-4-19 06:46:50的发言:

    if(str=='\n')/*对数组的最后一个元素的值进行处理*/   这一部分请求能够给我一个详细解析一下???
        str='\0';

作为键盘输入,敲回车的时候会带入一个'\n',而字符数组一般以'\0'作为结束标志,因此需要处理一下
'\0''\n'
/******************************
将调用fgets函数后的的换行去掉
****************************** */
void intverto0(char *s)
{
    while(*s != '\0')
    {
        if(*s == '\n')
        {
            *s = '\0';
            break;
        }
        s++;
    }
}
2013-04-19 15:13
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2392
专家分:13384
注 册:2013-3-3
收藏
得分:5 
if(str[i-1]=='\n')/*对数组的最后一个元素的值进行处理*/   这一部分请求能够给我一个详细解析一下???
        str[i]='\0';
    else
    {
        str[i]='\n';
        str[i+1]='\0';
    }
这是因为系统对字符数组最后两个元素进行填充空字符'\0',结束标志'\0'

Maybe
2013-04-20 15:37
快速回复:请求经验丰富的高手帮我看看代码的 意思
数据加载中...
 
   



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

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