【c编程】将字符串中所有字母字符按升序排序后,移到串的首部。其它字符按升序排序后,移到串的尾部。

要求:由input文件输入字符串,字符种类包括大小写字母,数字及shift+数字;输出移动后文件到output文件。应该需要获取input文件中字符串的长度,而不要写死固... 要求:由input文件输入字符串,字符种类包括大小写字母,数字及shift+数字;输出移动后文件到output文件。
应该需要获取input文件中字符串的长度,而不要写死固定长度的,谢谢

为什么运行时总打不开文件?我工程目录下是有input.txt文件的。谢谢!
input.txtif((fp=fopen("input.txt","r"))==NULL)
{
printf("Cannot open file strike any key exit!");
return 1;
}
展开
 我来答
dwthead
2009-09-12 · TA获得超过2309个赞
知道小有建树答主
回答量:1478
采纳率:0%
帮助的人:1935万
展开全部
不太会C

凑合吧
为了符合要求 我还得做malloc.h头文件
#include<stdio.h>
#include<string.h>
#include<malloc.h>
int main ()
{
FILE *fp;
char ch=0,
*letter,*other;
int l=0,o=0;
if((fp=fopen("input.txt","r"))==NULL)
{
printf("Cannot open file strike any key exit!");
return 1;
}
fseek(fp,0L,SEEK_END);
int size=ftell(fp);
letter=((char*)malloc(size*sizeof(char)));
other=((char*)malloc(size*sizeof(char)));
fseek(fp,0L,SEEK_SET);
while(ch!=EOF)
{
ch=fgetc(fp);
if(ch>='A'&&ch<='Z'||ch>='a'&&ch<='z')
letter[l++]=ch;
else other[o++]=ch;
}
letter[l]=0;
other[o]=0;
int i,j;
int length=strlen(letter);
for(i=0;i<length;i++)
{
for(j=0;j<length-i-1;j++)
{
if(letter[j]>letter[j+1])
{
char temp=letter[j];
letter[j]=letter[j+1];
letter[j+1]=temp;
}
}
}
length=strlen(other);
for(i=0;i<length;i++)
{
for(j=0;j<length-i-1;j++)
{
if(other[j]>other[j+1])
{
char temp=other[j];
other[j]=other[j+1];
other[j+1]=temp;
}
}
}
strcat(letter,other);
fclose(fp);
fp=fopen("output.txt","w");
l=0;
while(letter[l])
{
fputc(letter[l++],fp);
}
fclose(fp);
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
忘至白葬不情必0T
2009-09-11 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:90%
帮助的人:1.2亿
展开全部
就一个字符串么?可以用快速排序的划分部分的原理,把字母字符移到首部,其他字符移到尾部,然后再分别对两个部分冒泡排序即可。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友9568958
2009-09-11 · 超过47用户采纳过TA的回答
知道小有建树答主
回答量:181
采纳率:0%
帮助的人:88.1万
展开全部
你看看计算机三级书
都是这玩意
文件输出的和输入的
都有
你看一下吧
不行你在说
qq:906706186
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式