字符数组 str,通过 gets 输入一行任意的字符串,
1)请计算字符串长度,以及 sizeof(str),并打印输出
2)请把该字符串按照 ASCII 码重新排序,并输出 3)请输入一个字串,并在该字符串中查询它的位置。注:如果找不到,输出-1
关于#字符串#的问题,如何解决?(语言-c语言)
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- 技术专家团-小桥流水 2023-01-01 12:50关注
遍历字符统计长度(或者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; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥20 机器学习能否像多层线性模型一样处理嵌套数据
- ¥20 西门子S7-Graph,S7-300,梯形图
- ¥50 用易语言http 访问不了网页
- ¥50 safari浏览器fetch提交数据后数据丢失问题
- ¥15 matlab不知道怎么改,求解答!!
- ¥15 永磁直线电机的电流环pi调不出来
- ¥15 用stata实现聚类的代码
- ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
- ¥20 docker里部署springboot项目,访问不到扬声器
- ¥15 netty整合springboot之后自动重连失效