c语言文件部分编程求改错

这个题是要读取一个htm文件的标题(关键词是<title>)并输出标题内容以及在第几行,标题里有几个字母和数字。并把这些数据保存到b.txt中。
当我调试到while(fgets(b,sizeof(b),fp1))时,程序就会自动跳过后面的内容,请问这是为什么呢?

#include<stdio.h>
#include<string.h>
int findnum(char a[]);//定义找标题字符串中数字的函数
int findlet(char a[]);//定义找标题字符串中字母的函数
int main()
{
FILE *fp1,*fp2;
fp1=fopen("C:\\a.htm","r");//以只读方式打开fp1
fp2=fopen("C:\\b.txt","w");//以只写方式打开fp2
if(fp1=NULL)
{
printf("Fail to open the file!");
return -1;
}
char a[100];
char b[256];
char c[256];
int line=0;
strcpy(a,"title");//将title赋给字符串数组a[100]
int i,j;
while(fgets(b,sizeof(b),fp1))//每次读入fp1中的一行到数组b中
{
line++;
if(strstr(b,a))//判断title是否在该行
{
for(i=0;b[i]!='\0';i++)
{
while(b[i]=='>')
{
for(j=0;b[i+1]!='\0';j++)
{
c[j]=b[i+1];
i++;
}//将title的内容赋给字符串数组c

}
}
}
}
fprintf(fp2,"a.htm网页的标题是:%s\n",c);
fprintf(fp2,"标题在文件a.htm网页的第%d行:\n",line);
fprintf(fp2,"标题中数字字符的个数:%d\n",findnum(c));
fprintf(fp2,"标题中字母字符的个数:%d\n",findlet(c));//将结果写入b.txt中
fclose(fp1);
fclose(fp2);//关闭文件
return 0;
}
int findnum(char a[])
{
int result=0;
int m;
for(m=0;a[m]!='\0';a++)
{
if(a[m]>='0'&&a[m]<='9')
result++;
}
return result;
}
int findlet(char a[])
{
int result=0;
int m;
for(m=0;a[m]!='\0';a++)
{
if((a[m]>='A'&&a[m]<='Z')||(a[m]>='a'&&a[m]<='z'))
result++;
}
return result;
}
以至于结果是这样的

#include<stdio.h>
#include<string.h>
int findnum(char a[]);//定义找标题字符串中数字的函数
int findlet(char a[]);//定义找标题字符串中字母的函数
int main()
{
FILE *fp1,*fp2;
fp1=fopen("C:\\a.htm","r");//以只读方式打开fp1
fp2=fopen("C:\\b.txt","w");//以只写方式打开fp2
if(fp1=NULL)//    è¿™é‡Œæ˜¯==
{
printf("Fail to open the file!");
return -1;
}
char a[100];
char b[256];
char c[256];
int line=0;
strcpy(a,"title");//将title赋给字符串数组a[100]
int i,j;
while(fgets(b,sizeof(b),fp1))//每次读入fp1中的一行到数组b中
{
line++;
if(strstr(b,a))//判断title是否在该行
{
for(i=0;b[i]!='\0';i++)
{
while(b[i]=='>')
{
for(j=0;b[i+1]!='\0';j++)
{
c[j]=b[i+1];
i++;
}//将title的内容赋给字符串数组c
}
}
}
}
fprintf(fp2,"a.htm网页的标题是:%s\n",c);
fprintf(fp2,"标题在文件a.htm网页的第%d行:\n",line);
fprintf(fp2,"标题中数字字符的个数:%d\n",findnum(c));
fprintf(fp2,"标题中字母字符的个数:%d\n",findlet(c));//将结果写入b.txt中
fclose(fp1);
fclose(fp2);//关闭文件
return 0;
}
int findnum(char a[])
{
int result=0;
int m;
for(m=0;a[m]!='\0';a++)
{
if(a[m]>='0'&&a[m]<='9')
result++;
}
return result;
}
int findlet(char a[])
{
int result=0;
int m;
for(m=0;a[m]!='\0';a++)
{
if((a[m]>='A'&&a[m]<='Z')||(a[m]>='a'&&a[m]<='z'))
result++;
}
return result;
}
温馨提示:答案为网友推荐,仅供参考
相似回答