c - 无法理解这个 C 程序
问题描述
我是编程新手,没有得到下面的代码。该程序检查字符串中是否有c
字符s
。
int is_in(char *s, char c){
while(*s){
if(*s==c) return 1;
else s++;
return 0;
}
让我感到困惑的主要事情是,while
循环将如何停止,因为我认为s++
在字符串结束之后也会遍历整个内存。任何人都可以解释一下吗?如果我错了,请纠正我。
解决方案
循环在为 0 时停止*s
,即在以 NUL 结尾的字符串的末尾。
在 C 中建模字符串的惯用方法是用 0终止它们。请注意,如果s
不是以这种方式形成的,那么函数的行为是undefined。
就个人而言,我更喜欢该函数向int is_in(const char *s, char c)
调用者表明该函数不会修改字符串。
推荐阅读
- html - 防止雷鸟放大图像并将其用作链接
- linux - 在 golang 中运行命令并将其与进程分离
- docker - 不同的Docker容器链?
- python - 在python中连接计数变量和字符串
- c# - 如何使用 c# 使用 Visual Studio 代码引用程序集(Entity Framework System.Net)?
- c# - 在运行时为动态创建的对象动态创建绑定
- generics - 捕获由给定 KClass 定义的异常
在科特林? - asp.net-core - 在@code - .net Core Blazor 中访问@Inject 变量
- selenium - 如何修复 if 语句在 selenium 中不起作用
- javascript - 移除
在 JavaScript 中从内容的开始和结束标记