他这个具体求法怎么求的呀,这个if条件限制的是什么,具体思路麻烦解答一下
2条回答 默认 最新
- Gary_HanJR 2023-04-19 22:19关注
#include <stdio.h> char *a = "you"; char b[] = "welcome you to China!"; int main() { int i, j = 0; char *p; for (i = 0; b[i] != '\0'; i++) { if (*a == b[i]) { p = a; for (j = i; *p != '\0'; j++, p++) { if (*p != b[j]) { break; } } if (*p == '\0') { break; } } } printf("%s", &b[i]); return 0; }
首先来是变量的定义和初始化部分:
char *a = "you"; char b[] = "welcome you to China!"; int i, j = 0; char *p;
这里定义了两个指向字符的指针 a 和 p,分别指向字符串常量 "you" 和字符数组 b 的首地址;还定义了两个整型变量 i 和 j,变量 j 初始化为 0。
然后是程序的核心部分:
for (i = 0; b[i] != '\0'; i++) { if (*a == b[i]) { p = a; for (j = i; *p != '\0'; j++, p++) { if (*p != b[j]) { break; } } if (*p == '\0') { break; } } } printf("%s", &b[i]);
首先是外层循环,对字符串 b 进行遍历,利用 i 来保存当前遍历到的字符在 b 中的下标,当遇到一个字符与 a 中的第一个字符相同时,进入内层循环。
内层循环则利用指针 p 来遍历字符串 a,同时根据 j 的值检查 a 和 b 对应位置的字符是否相等。
最后,如果 a 中所有字符均被匹配到了,那么 p 指向的位置就是 a 在 b 中首次出现的位置。于是程序打印出字符串 b 从该位置开始的所有字符,即为 &b[i]。
总体上,这段程序的功能是:查找字符串 a 在字符串 b 中首次出现的位置,输出从该位置开始的所有字符。如果不存在这样的位置,则什么也不做。
希望这段解释对您有所帮助。
本题目是指我所列举的代码上稍作修改,只是在找到 a 在 b 中出现的位置之后,增加了一次打印操作。具体来说,利用 printf 函数打印从位置 i 开始的子串即可。本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
- ¥15 Vue3地图和异步函数使用
- ¥15 C++ yoloV5改写遇到的问题
- ¥20 win11修改中文用户名路径
- ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
- ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
- ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题
- ¥15 帮我写一个c++工程
- ¥30 Eclipse官网打不开,官网首页进不去,显示无法访问此页面,求解决方法
- ¥15 关于smbclient 库的使用