C语言程序:查找输入文本中最长的一行
#include<stdio.h> #define MAXLINE 1000 int getline(char line[],int maxline); void copy(char to[],char from[]); int main() { int len,max; char line[MAXLINE]; char longest[MAXLINE]; max=0; while((len=getline(line,MAXLINE))>0) { printf('%d, %s',len,line); 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,j; j=0; for(i=0;(c=getchar())!=48&&c!=' ';++i) if(i<lim-2) { s[j]=c; ++j; } if(c==' ') { s[j]=c; ++j; ++i; } s[j]='�'; return i; } void copy(char to[],char from[]) { int i=0; while((to[i]=from[i])!='�') ++i; }
这段C语言代码是一个简单的程序,它实现了从输入中读取多行文本并找到最长的一行。
代码中使用了三个函数:getline,copy和main。下面是对每个函数的详细解释:
-
getline函数:
- 参数:s[]表示字符数组,lim表示数组的最大长度。
- 功能:从输入中读取一行文本,并将其保存在字符数组s[]中。
- 过程:函数使用一个循环来逐个读取字符,直到遇到换行符或达到数组长度上限。在循环中,将读取到的字符逐个保存在字符数组s[]中,并使用一个变量j来记录字符数组的索引位置。最后,在字符数组的末尾添加一个空字符以表示字符串的结束,并返回读取的字符数i。
-
copy函数:
- 参数:to[]和from[]都是字符数组。
- 功能:将字符数组from[]中的内容复制到字符数组to[]中。
- 过程:函数使用一个循环来逐个复制字符,直到遇到空字符(字符串的结束标志)为止。循环中,将from[]中的字符逐个复制到to[]中,并使用一个变量i来记录字符数组的索引位置。
-
main函数:
- 无参数。
- 功能:主函数,负责调用getline和copy函数,以及输出最长的一行。
- 过程:在主函数中,定义了三个变量:len(用于记录每行文本的字符数)、max(用于记录最长的一行的字符数)和line[](用于保存当前读取的一行文本)。然后,使用一个while循环来不断调用getline函数,直到getline函数返回的字符数为0(即输入结束)。在循环中,输出当前行的字符数和内容,并与max进行比较,如果当前行的字符数大于max,则更新max和longest[](用于保存最长的一行)。最后,如果max大于0,则输出最长的一行。
总体来说,这段代码实现了从输入中读取多行文本,并找到其中最长的一行。它使用了循环、条件判断、字符数组和函数调用等基本的C语言元素。
原文地址: https://www.cveoy.top/t/topic/pFZi 著作权归作者所有。请勿转载和采集!