黑马程序员技术交流社区
标题:
判断一个字符串是否含有某个特定的字符
[打印本页]
作者:
诺微_
时间:
2014-12-1 22:54
标题:
判断一个字符串是否含有某个特定的字符
这里总结了4种方式,越往后越绕。。。。。。。
/*
要求:编写一个函数:char_contains(char str[], char c)用来判断字符串是否含有字符c,含有就返回1,否则返回0
*/
#include <stdio.h>
#include <string.h>
int char_contains(char str[], char c);
int main()
{
char name[] = "itcast";
int result = char_contains(name, '8');
printf("%d\n", result);
return 0;
}
/*
// 方式1:for语句
int char_contains(char str[], char c)
{
// 1.遍历整个字符串数组
for (int i = 0; i < strlen(str); i++) {
//2.如果发现某个字符和参数c一样,就返回1,并且退出函数
if (str[i] == c) {
return 1;
}
// 注意:return 0不是写在这里
}
//3.说明str里面不包含字符c
return 0; // 写在这里说明代码遍历完也没return1,就返回0
} */
/*
// 方式2:while语句
int char_contains(char str[], char c)
{
// 1.遍历整个字符串数组
int i = 0;
while (str[i] != '\0') {
//2.如果发现某个字符和参数c一样,就返回1,并且退出函数
if (str[i] == c) {
return 1;
}
i++;
}
//3.说明str里面不包含字符c
return 0; // 写在这里说明代码遍历完也没return1,就返回0
}*/
/*
// 方式3:while语句(简化)
int char_contains(char str[], char c)
{
// 1.遍历整个字符串数组
int i = 0;
while (str[i]) { // while (str[i] != 0)——>while (str[i])
//2.如果发现某个字符和参数c一样,就返回1,并且退出函数
if (str[i] == c) {
return 1;
}
i++;
}
//3.说明str里面不包含字符c
return 0; // 写在这里说明代码遍历完也没return1,就返回0
}*/
/*
// 方式3:while语句(再次简化)
int char_contains(char str[], char c)
{
// 1.遍历整个字符串数组
int i = -1;
while (str[++i]) { // while (str[i] != 0)——>while (str[i])
//2.如果发现某个字符和参数c一样,就返回1,并且退出函数
if (str[i] == c) {
return 1;
}
}
//3.说明str里面不包含字符c
return 0; // 写在这里说明代码遍历完也没return1,就返回0
}*/
// 方式4:while语句(精简)
int char_contains(char str[], char c)
{
// 1.遍历整个字符串数组
int i = -1;
while (str[++i] != c && str[i] != '\0') ; // str[++i] != c && str[i] != '\0'(此时前面的str[++i]和后面的str[i]为数组中的同一个字符 ++i:先加1在参与运算)即如果当前值不与c相等且不是\0,条件就成立,便执行循环体(空语句)
// 2.判断
return str[i] == '\0' ? 0 : 1; // 如果遍历到\0即字符串最后一个字符,说明前面的值都没有与c相同的字符,就返回0,否则返回1(此时并没有遍历到\0)
//return str[i] != '\0'; // 上面的变形
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2