求大神帮助,关于fopen的一点有关问题
求大神帮助,关于fopen的一点问题
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAXSIZE 1000
int main()
{
FILE *fp;
char input[MAXSIZE];
char output[MAXSIZE];
int in_len=0,ou_len=0;
fp=fopen("D:\\abc.txt","r");
if(fp == NULL)
{
perror("fopen");
return 1;
}
while( fgets(input,fp,MAXSIZE)!=NULL )
{
in_len=sizeof(input)/sizeof(input[0]);
if(in_len>ou_len)
{
strcpy(output,input);
ou_len=in_len;
output[ou_len]='0';
}
}
printf("%s,%d",output,ou_len);
fclose(fp);
return 0;
}
程序要求一行行读入输入行,直到文件尾,算出每行输入行的长度,然后把最长的哪行打印出来。
我这样写,最后程序一运行就出错,求大神赐教!
------解决方案--------------------
以上是正确的代码。你的逻辑基本没有问题,但是小的细节有错
1)计算长度最好用strlen()函数
2)字符数组最后的字符为‘\0’或者0
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAXSIZE 1000
int main()
{
FILE *fp;
char input[MAXSIZE];
char output[MAXSIZE];
int in_len=0,ou_len=0;
fp=fopen("D:\\abc.txt","r");
if(fp == NULL)
{
perror("fopen");
return 1;
}
while( fgets(input,fp,MAXSIZE)!=NULL )
{
in_len=sizeof(input)/sizeof(input[0]);
if(in_len>ou_len)
{
strcpy(output,input);
ou_len=in_len;
output[ou_len]='0';
}
}
printf("%s,%d",output,ou_len);
fclose(fp);
return 0;
}
程序要求一行行读入输入行,直到文件尾,算出每行输入行的长度,然后把最长的哪行打印出来。
我这样写,最后程序一运行就出错,求大神赐教!
------解决方案--------------------
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAXSIZE 1000
int main()
{
FILE *fp;
char input[MAXSIZE];
char output[MAXSIZE];
int in_len=0,ou_len=0;
fp=fopen("answer","r");
if(fp == NULL)
{
perror("fopen");
return 1;
}
while( fgets(input,MAXSIZE,fp)!=NULL )
{
in_len=strlen(input);
printf("number %d\n",in_len);
if(in_len>ou_len)
{
strcpy(output,input);
ou_len=in_len;
output[ou_len]='\0';
}
}
printf("%s,%d",output,ou_len);
fclose(fp);
return 0;
}
以上是正确的代码。你的逻辑基本没有问题,但是小的细节有错
1)计算长度最好用strlen()函数
2)字符数组最后的字符为‘\0’或者0