【发布时间】:2016-10-17 13:47:26
【问题描述】:
我是一名初学者,正在学习使用 k&r 的 c 编程书进行编码。现在有这个“输入一组文本行并打印最长的程序”的例子
我给你完整的代码:
#include<stdio.h>
#define MAXLINE 1000
int getline(char line[], int maxline);
void copy(char to[], char from[]);
int 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]='\n';
i++;
}
s[i]='\0';
return i;
}
void copy(char to[], char from[])
{
int i;
i=0;
while((to[i]=from[i])!='\0')
i++;
}
现在告诉我,在 getline 函数中,在语句中:
for(i=0;i<lim-1&&(c=getchar())!=EOF&&c!='\n';i++)
我们为什么要使用“c!='\n'”
这个for语句之后的代码是什么意思,即
s[i]=c;
if(c=='\n)
{
s[i]=c;
i++;
}
s[i]='\0'
为什么我们在这里使用 s[i]='\0'?
和i++; 条件中的i++; 语句?
【问题讨论】:
-
请编辑您的问题并修正缩进。
-
你确定书中没有解释这些概念吗?
-
mr michael 可能是因为打字错误..我第一次使用堆栈溢出
-
@yogirajput 你可以编辑你的问题并改进它。
-
@yogirajput 请先修复缩进,没人想看这个烂摊子。
标签: c