返回首页

我写了下面的程序和编译Windows 7上使用wxDevÇ7.3.0.6,但我没有得到所需的输出(打印最长的线路输入),即使它没有顺利编译。

#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;

}

 

int getline(char s[], int lim)

{

    int c, i;

 

    for(i=0; i < lim-1 && (c=getchar())!= EOF && c!='\n'; ++i)

        s[i]=c;

 

    if(c=='\n')

    {

        s[i]=c;

        ++i;

    }

 

    s[i]='\0';

 

    return i;

}

 

void copy(char to[], char from[])

{

    int i;

 

    i=0;

    while((to[i]=from[i])!='\0')

        ++i;

}
请帮我吗?

回答

评论会员:SAKryukov 时间:2012/02/06
输出的东西。你期待更多一些?

到底是printf输出任何唯一的呼叫。你可以很容易失败注意到它,因为这个应用程序后,立即存在。

另一个问题:getline函数总是返回长度> 0,即使只是另一个按下回车键。我想你想退出循环,如果用户按下回车键,现在执行无限循环,除非用户用CTRL C结束,但随后该方案的结果是不输出。也许,回到我减1,而不是我,在这种方式,将长度字符串的长度不计数的'\ n'和'\ 0',这将是你的目的只是罚款
结束。
好,输出提示用户每次调用函数getline前,你就会没事

mdash;水杨酸
评论会员:安德鲁・布洛克 时间:2012/02/06
添加#include LT; windows.hgt;,所以我们可以使用暂停

主要有:

修订后的函数getline():
int getline(char s[], int lim)

{

    int c, i;

 

    for(i=0; i < lim-1 && (c=getchar())!= EOF && c!='\n'; ++i)

        s[i]=c;

    //comment out this

    /*if(c=='\n')

    {

        s[i]=c;

        ++i;

    }*/

 

    s[i]='\0';

 

    return i;

}

这将允许你输入一个系列的话,当你进入一个空白的字(只需点击进入),这将打破,并打印您输入最长的工作:安德烈Kraak
评论会员:游客 时间:2012/02/06
你没有指定什么不顺心的,但我的猜测。该计划从未停止,并打印最长的字符串输入。你设置getline函数返回0时停止线的方案,但是,如果你看一下你的函数getline,你会看到它总是存储在它的输入。这意味着,对于一个空字符串的长度是1而不是0。所以,如果你更换补体C3}{的C4}{你应该得到你预期的结果