字符数组 str,通过 gets 输入一行任意的字符串,
1)请计算字符串长度,以及 sizeof(str),并打印输出
2)请把该字符串按照 ASCII 码重新排序,并输出 3)请输入一个字串,并在该字符串中查询它的位置。注:如果找不到,输出-1
遍历字符统计长度(或者strlen计算长度)sizeof()计算的是数组的大小,如果数组定义为char str[1000],sizeof(str)就是1000。
运行结果:
代码:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#define MAXLEN 1000
//计算长度
int length(const char* p)
{
int n = 0;
while (p[n] != '\0')
n++;
return n;
}
//查找字串的位置,如果找不到输出-1
int findStr(char* big, char* sml)
{
int i = 0, j = 0;
for (i = 0; big[i] != '\0'; i++)
{
for (j = 0; sml[j] != '\0'; j++)
{
if (big[i + j] != sml[j])
break;
}
if (sml[j] == '\0')
return i;
}
return -1;//没有找到
}
int main()
{
char str[MAXLEN] = { 0 }, tmp[MAXLEN] = { 0 };
char sub[MAXLEN] = { 0 };
int i, j, t;
int len = 0;
int pos = -1;
printf("请输入一个字符串:\n");
gets_s(str);
len = length(str);
//TMP保留str的原始内容,以便查找字串
for (i = 0; str[i] != '\0'; i++)
tmp[i] = str[i];
tmp[i] = 0;
printf("字符串长度:%d\n", len);
printf("sizeof(str):%d\n", sizeof(str));
//按ASCII排序并输出
for (i = 0; i < len - 1; i++)
{
for (j = 0; j < len - 1 - i; j++)
{
if (str[j] > str[j + 1])//按ASCII码从小到大排序
{
t = str[j];
str[j] = str[j + 1];
str[j + 1] = t;
}
}
}
//输出排序后的
printf("按ASCII从小到大排序后的字符串:%s\n", str);
//输入并查找字串
printf("请输入一个字串:\n");
gets_s(sub);
pos = findStr(tmp, sub);
printf("字串位置:%d\n", pos);//输出字串位置
return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!