输入行的问题?

ltcs 2004-06-07 04:34:12
问题如下:
编写一个程序,一行行地读取输入行,直至到达文件尾,算出每行的长度,然后打印最长的那行,所有的输入行均不超过1000个字符.
...全文
155 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
beiyes 2004-06-08
  • 打赏
  • 举报
回复
华工c语言书上有这么一道题目
#include <stdio.h>
#define MAXLINE 100
int getline(char[],int); //得到输入行到char[],int是限制输入的最长长度,即
//MAXLINE,返回值是输入的行的长度
void copy(char[],char[]); //如果输入的行的长度大于已经储存的最长行的长度, //把当前行拷贝到最长行数组中去

int main()
{
int len; //当前行长度
int max; //最长的行
char line[MAXLINE]; //当前输入的行
char longest[MAXLINE]; //存储的最长的行

max = 0;
printf("input lines end of ctrl+z:\n");
while((len = getline(line,MAXLINE))>0)
if(len>max)
{
max=len;
copy(line,longest);
}
if(max>0)
printf("longest line is %s, length = %d\n",longest,max);
return 0;
}

int getline(char s[],int lim)
{
int c,i;

i = 0;
while(--lim>0 && (c=getchar())!=EOF&&c!='\n')
s[i++] = c;
if(c=='\n')
s[i++] = '\0';
return i;
}

void copy(char from[], char to[])
{
int i = 0;

while((to[i] = from[i])!='\0')
i++;
}
ltcs 2004-06-08
  • 打赏
  • 举报
回复
对不起,浪费各位时间了,本人是初学者.
junnyfeng 2004-06-07
  • 打赏
  • 举报
回复
编写一个程序,一行行地读取输入行,直至到达文件尾
---------------------

很显然是读文件,怎么会是键盘输入?

ltcs(), 你语文不行就用英文吧,这样的语文水平很难在国内立足啊
cfan246 2004-06-07
  • 打赏
  • 举报
回复
给你的程序,你改一下不就完了?
ltcs 2004-06-07
  • 打赏
  • 举报
回复
我没说清楚,读取输入行是从键盘上输入的.
leonchew 2004-06-07
  • 打赏
  • 举报
回复
//试试我的,或许更符合你的题意
#include <stdio.h>
#include <string.h>
#define MAX 1001
#define FILENAME "a.txt"

int main(void )
{ char str[MAX];
int line_len=0;
int line_max=0;
int line_num=1;
FILE *fp;
fpos_t fpos,ftemp;
if ((fp=fopen(FILENAME,"r"))==NULL) {
printf("Open error:\n");
return 0;
}
while(!feof(fp)){
fgetpos(fp,&ftemp);
fgets(str,MAX,fp);
line_len=strlen(str);
if( line_len > line_max )
{ line_max=line_len;
fpos=ftemp;
}
printf("the %d line's length is %d\n",line_num,line_len);
line_num++;
}
fsetpos(fp,&fpos);
fgets(str,MAX,fp);
printf("the most length line is : %s\n",str );
return 0;
}
junnyfeng 2004-06-07
  • 打赏
  • 举报
回复
#include<stdio.h>
#include<string.h>
#include <stdlib.h>
main()
{
int record[1001],num=1001,i=0,max=0;
FILE *fp;
char str[1001],res[1001];
if((fp=fopen("dbc.txt","r"))==NULL)
{

printf("open file error");
exit(1);
}
while(!feof(fp))
{
if(fgets(str,num,fp))
{
record[++i]=strlen(str)-1;
if(record[i]>max)
{
max=i;
strcpy(res,str);
}
}
}
if(max!=0)
printf("the %d line is the max: \n%sit has %d chars",max,res,record[max]);
else
printf("the file is emtpy!");
}
applebomb 2004-06-07
  • 打赏
  • 举报
回复
定义一个1001 bytes的buffer
while !feof则循环:
{
用fgets来获取,然后IF该行值比最值大,最大值=该行值,最大行号=该行号
}
最后输出最大行号
applebomb 2004-06-07
  • 打赏
  • 举报
回复
定义一个1001 bytes的buffer
循环:
{
用fgets来获取,然后IF该行值比最值大,最大值=该行值,最大行号=该行号
}
最后输出最大行号
Bandry 2004-06-07
  • 打赏
  • 举报
回复

简单啊,一次读取一行就可以了啊
应该有一次读取一行的函数

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧