【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;
} 展开
应该需要获取input文件中字符串的长度,而不要写死固定长度的,谢谢
为什么运行时总打不开文件?我工程目录下是有input.txt文件的。谢谢!
input.txtif((fp=fopen("input.txt","r"))==NULL)
{
printf("Cannot open file strike any key exit!");
return 1;
} 展开
展开全部
不太会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;
}
凑合吧
为了符合要求 我还得做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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
就一个字符串么?可以用快速排序的划分部分的原理,把字母字符移到首部,其他字符移到尾部,然后再分别对两个部分冒泡排序即可。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你看看计算机三级书
都是这玩意
文件输出的和输入的
都有
你看一下吧
不行你在说
qq:906706186
都是这玩意
文件输出的和输入的
都有
你看一下吧
不行你在说
qq:906706186
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询