第7周 C语言程序设计(新2版) 例题1.9 字符数组(打印最长输入行)

来源:互联网 发布:女生棒球服搭配 知乎 编辑:程序博客网 时间:2024/04/30 12:09

1、打印最长输入行

问题及代码:

/*打印最长输入行*/#include <stdio.h>#define MAXLINE 100int 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]=c;      i++;     }    s[i]='\0';  //字符串末尾以'\0'为结尾不能漏了  return i; } void copy(char to[],char from[])  { int i; i=0; while((to[i]=from[i])!='\0') //只要复制不到字符的结尾符号‘\n’,循环将持续   i++; }


2、打印任意长度的输入行长度,并尽可能打印文本

问题及代码:

#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)       {       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;    //j记录复制到字符串s中字符的个数     for(i=0;(c=getchar())!=EOF&&c!='\n';i++)  //不再检查字符数是否超出数组s的限制         if(i<lim-2)   //数组s的最后一个下标是lim-1;         {        s[j]=c;        j++;}     if(c=='\n')         {          s[j]=c; j++;           i++;           }      s[j]='\0';  //字符串末尾以'\0'为结尾不能漏了       return i;   }   void copy(char to[],char from[])    {      int i;      i=0;      while((to[i]=from[i])!='\0') //只要复制不到字符的结尾符号‘\n’,循环将持续         i++;   }  


0 0