我一直在钻研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;
}
答案 0 :(得分:0)
while
中的main
循环仅在返回的长度为零时结束,但除非唯一的字符读取为EOF
,否则它永远不会结束。如果有人按下Enter,它将添加换行符并增加大小,因此返回1。
也许您想删除if(c=='\n')
的特殊情况处理,如果有人在没有其他文本的情况下按Enter键,则返回空字符串。