一个循环在C中不会中断

时间:2015-04-14 19:25:13

标签: c loops

我一直在钻研C而宁愿使用scanf()我想尝试构建自己的函数来获得整行。我编写了这个函数,在我的main函数中返回一行进行比较,除了它不会突破循环以打印我的结果。

我不知道这是实际的功能还是我在main()中的实现方式。

以下是代码:

main() {
    int len;
    int max = 0; //Largest line so far..
    char linetemp[MAXLINE]; 
    char linemax[MAXLINE];
    while((len = getLine(linetemp,MAXLINE))> 0){
        if(len>max){
            max = len;
            cpy(linemax,linetemp);
        }
    }   
    if(max>0) {  //If their was even a line
        printf("Longest Line:\n %s \n", linemax);
    } else {
        printf("No lines found!");
    }
}

int getLine(char l[], int lim) {
    int c, i;
    for(i=0; i< lim - 1 && (c=getchar())!= '\n' && c != EOF ;++i)
        l[i]= c;
    if(c =='\n') {
        l[i]= c;
        ++i;
    }
    l[i]= '\0';
    return i;
}

1 个答案:

答案 0 :(得分:0)

while中的main循环仅在返回的长度为零时结束,但除非唯一的字符读取为EOF,否则它永远不会结束。如果有人按下Enter,它将添加换行符并增加大小,因此返回1。

也许您想删除if(c=='\n')的特殊情况处理,如果有人在没有其他文本的情况下按Enter键,则返回空字符串。