求大佬教程序c语言,老是写错
从文本中输入一篇英语文章到程序中,计算里面的单词数,再求字母的众数不分大小写,在按照单词长到短排序到一个新建的文本中。求大佬教我谢谢!!!
#include<stdio.h>
#include<string.h>
//替换字符串
void swap(char *a,char *b)
{
char temp[25]={0};
strcpy(temp,a);
strcpy(a,b);
strcpy(b,temp);
}
int main()
{
char str[100]={0}, p[25][10];
int a[25][10];
//变量定义的有点多
int sum=0,i,j=0,x=0,y=0,m=0,r=0,t=0;
printf("请输入单词:");
//输入英语文章
gets(str);
//统计单词的数量
for(i=0;str[i]!=0;i++)
{
if((str[i+1]==' '||str[i]<65||str[i]>127||str[i+1]==0)&&str[i]!=' ')
{
++sum;
}
}
printf("单词数:%d\n",sum);
//将str字符串分成段赋给二维字符数组
for(i=0;str[i]!=0;i++)
{
//如果字符是空格,或者是'\0',或者不是字母,将字符值改为'\0',从而达到p得到的是一个单词,而不是一段单词
if(str[i]==' '||str[i+1]==0||str[i]<65||str[i]>127)
{
p[j++][m]='\0';
m=0;
}
else //如果字符不是空格,不是'\0',但如果字符是字母,就开始赋值
{
p[j][m++]=str[i];
}
}
//输出字符串
for(i=0;i<j;i++)
{
printf("%s ",p[i]);
}
//冒泡排序
for(r=0;r<j;r++)
{
for(t=r+1;t<j;t++)
{
if(strlen(p[r])<strlen(p[t]))
{
swap(p[r],p[t]);
}
}
}
//输出排序后的字符串
printf("\n排序后\n");
for(i=0;i<j;i++)
{
printf("%s ",p[i]);
}
//写入文件
FILE *fp1;
fp1=fopen("str.txt","w+");
for(i=0;i<j;i++)
{
fwrite(p[i],1,strlen(p[i]),fp1);
fwrite("\n",1,1,fp1);
}
//关闭文件写入
fclose(fp1);
getchar();
return 0;
}
本人能力有限,做的并不完美,请谅解。