| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 789 人关注过本帖
标题:有关C程序运行过程的问题
取消只看楼主 加入收藏
hduzmj2015
Rank: 2
等 级:论坛游民
帖 子:12
专家分:17
注 册:2016-3-16
结帖率:50%
收藏
已结贴  问题点数:5 回复次数:0 
有关C程序运行过程的问题
这是大名鼎鼎《The C Programming Language》里面的一个例子。问题请见红色注释处(运行环境VC 6.0)
/*改程序读入一组文本,并将最长的文本行打印出来*/
# include <stdio.h>
# define MAXLINE 1000

int getline(char line[], int maxline);
void copy(char to[], char from[]);

/* 打印最长的输入行*/
main()
{
    int len;
    int max;
    char line[MAXLINE];
    char longest[MAXLINE];

    max = 0;
    while((len = getline(line, MAXLINE)) > 0)
        if(len > max)
        {
            max = len;
            copy(longest, line);
        }
    if(max > 0)
        printf("%s",longest);
    return 0;
}

/*getline函数:将一行读入s中并返回其长度值*/
int getline(char s[], int lim)
{
    int c, i;
    for(i=0; i<lim-1 && (c = getchar()) != EOF && c != '\n'; i++)  //运行,输入一行字符再键入回车Enter,按照c != '\n'的条件,它应该退出循环,回到主程序直到执行完毕。但是根据题目,如果回车就执行完毕了,就无所谓两行之间的比较了。实际运行情况是,回车之后还是等待输入,为什么?
        s[i] = c;
    if(c == '\n')
    {
        s[i] = c;
        ++i;
    }
    s[i] = '\0';
    return i;
}
/*copy函数:将from复制到to*/
void copy(char to[], char from[])
{
    int i;

    i = 0;
    while((to[i] = from[i]) != '\0')
        ++i;
}
2016-03-17 18:11
快速回复:有关C程序运行过程的问题
数据加载中...
 
   



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

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