字符数组 str,通过 gets 输入一行任意的字符串,
1)请计算字符串长度,以及 sizeof(str),并打印输出
2)请把该字符串按照 ASCII 码重新排序,并输出
3)请输入一个字串,并在该字符串中查询它的位置。注:如果找不到,输出-1
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int length = 0;
char input[101];
gets(input);
length = strlen(input);
printf("字符串长度:%d,sizeof(str):%d",length, sizeof(input));
return 0;
}
运行结果:
代码:
#include <stdio.h>
#include <string.h>
int main()
{
char str[1000]={0};
char tmp[1000]={0},tt; //复制str,避免第2步操作后对第3题产生影响
char sub[1000]={0}; //需要查找的子串
int len = 0;
int i,j;
//(1)字符串长度是以\0为结束字符的,sizeof计算的是数组的大小,这里申请的大小是1000,所以sizeof(str)就是1000
printf("请输入一个字符串:\n");
gets(str); //读取字符串
printf("字符串的长度:%d,sizeof(str):%d\n",strlen(str),sizeof(str));
//(2)把该字符串按照 ASCII 码重新排序,并输出
strcpy(tmp,str);
len = strlen(str);
for(i=0;i<len-1;i++)
{
for(j=0;j<len-1-i;j++)
{
if(tmp[j]>tmp[j+1])
{
tt = tmp[j];
tmp[j] = tmp[j+1];
tmp[j+1]= tt;
}
}
}
printf("按照ASCII码排序后的字符串:\n");
printf("%s\n",tmp);
printf("请输入要查找的子串:");
gets(sub);
for(i=0;i<len-strlen(sub);i++)
{
for(j=0;j<strlen(sub);j++)
{
if(str[i+j] != sub[j])
break;
}
if(j==strlen(sub))
{
printf("%d",i);
return 0;
}
}
printf("-1");
return 0;
}