7 回答
慕斯3948292
TA贡献2条经验 获得超2个赞
//望采纳,嘻嘻 /* 这个程序是读入一组文本行,并把最长的文本行打印出来 */ #include <stdio.h> #define MAXLINE 1000 int getline(char line[],int maxiline); 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) /* 存在这样的行 */ //这里的if语句是为了判断是否有输入行,有则输出最长的,没有就return 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'; ++1) //因为i是从0开始的,所以i最后到lim-1 s[i] = c; if (c == '\n'){ //前面不等于\n成立时只执行s[i] = c;。后面的等于\n,不仅要执行s[i] = c; 还要执行++i; s[i] = c; ++i; } s[i] = '\0'; //在c语言中,字符是按其所对应的ASCII码来存储的,一个字符占一个字节。第一个ASCII码,对是0,对应的字符是(Null),其实就是‘\0’,即空字符。可以通过如下ASCII码表来查询到。 return i; } /* copy函数:将from复制到to;这里假定to足够大 */ void copy(char to[],char from[]) { int i; i=0; while ((to[i] = from[i]) != '\0') ++i; }
mrs_empress
TA贡献11条经验 获得超2个赞
/* 这个程序是读入一组文本行,并把最长的文本行打印出来 */ #include <stdio.h> #define MAXLINE 1000 int getline(char line[],int maxiline); 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) /* 存在这样的行 */ //这里的if语句有什么用,是为了排除'\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'; ++1) //这里的lim-1是什么意思?且我用软件编译时提示错误,为什么? s[i] = c; if (c == '\n'){ //为什么前面不等于\n,现在要等于\n,做的事情不是都一样吗? s[i] = c; ++i; } s[i] = '\0'; //为什么又把它变为0,那么赋值有什么作用呢? return i; } /* copy函数:将from复制到to;这里假定to足够大 */ void copy(char to[],char from[]) { int i; i=0; while ((to[i] = from[i]) != '\0') ++i; }
- 7 回答
- 0 关注
- 1722 浏览
添加回答
举报
0/150
提交
取消