C和指针之字符串编程练习8实现char *my_strnchr(char const *str, int ch, int which)
2017-11-21 23:00
459 查看
1、问题
编写函数类似strchr函数,但是它有3个参数,第三个参数是1, 这个函数的功能就和strchr完全一样,如果第三个参数是2,这个函数就返回一个指向ch字符在str字符串第二次出现的位置的指针,以此类推
2、代码实现
1 #include <stdio.h>2 #include <string.h>
3
4 /**
5 编写函数类似strchr函数,但是它有3个参数,第三个参数是1, 这个函数的功能就和strchr完全一样,
6 如果第三个参数是2,这个函数就返回一个指向ch字符在str字符串第二次出现的位置的指针,以此类推
7 **/
8 char *my_strnchr(const char *str, int ch, int which)
9 {
10 if (which <= 0)
11 return str;
12 for (int i = 0; i < which; ++i)
13 {
14 if (str != NULL)
15 {
16 str = strchr(str, ch);
17 //最后一次出现不需要指针向右移动
18 if (i != which -1)
19 {
20 //如果which的次数比ch出现的多
21 //直接返回str
22 if (str == NULL)
23 return str;
24 //记得每次找到之后指针要向右移动一下
25 //不然每次都是打印一样的结果
26 str++;
27 }
28 }
29 }
30 return str;
31 }
32
33
34 int main()
35 {
36 //这里str指针是可以变的,因为不是指针常量
37 const char *str = "chenyuchenyuchenyu";
38 char ch = 'c';
39 for (int which = 1; which <= 5; ++which)
40 {
41 printf("my_strnchr('chenyuchenyuchenyu', %c, %d) is %s\n", ch, which, my_strnchr(str, ch, which));
42 str = "chenyuchenyuchenyu";
43 }
44 return 0;
45 }
3、运行结果
$ vim my_strnchr.c$ gcc -g -w my_strnchr.c -o my_strnchr
$ ./my_strnchr
my_strnchr('chenyuchenyuchenyu', c, 1) is chenyuchenyuchenyu
my_strnchr('chenyuchenyuchenyu', c, 2) is chenyuchenyu
my_strnchr('chenyuchenyuchenyu', c, 3) is chenyu
my_strnchr('chenyuchenyuchenyu', c, 4) is (null)
my_strnchr('chenyuchenyuchenyu', c, 5) is (null)
相关文章推荐
- 编写一个函数 char *my_strnchr(char const *str,int ch,int which)
- C和指针之字符串实现my_strrchr(char *str, int ch)的函数
- 【C编程练习】华为2013校园招聘机试题3:对源字符串中得字符串进行查找替换并返回动态申请空间的指针char* Fun(char*pSrc,char*pOldStr, char*pNewStr)
- 【C编程练习】2013华为校园招聘机试题9月10日题1:把整数转换成字符串 void ConvertIntToStr(int nVal, char* pStr);
- 编程实现函数 int my_atoi(const char *str)
- 编写一个函数 char *my_strrchr(char const *str,int ch)
- 编程练习------C/C++分别实现字符串与整数的转换
- 算法19:实现 char* strtok(char* str, const char* delimeter)
- C/C++学习之C提高-----非空格的字符串长度、去掉字符串前后空格、字符串反转、键值对字符串、const练习、二级指针做输入/输出的特性、将字符串按逗号分开,并放入二维数组打印出来
- C和指针之字符串编程练习1
- C和指针之字符串编程练习11(统计一串字符包含the的个数)
- C和指针之字符串编程练习3
- 10.6 分别用字符数组和字符指针作函数参数两种方法编程实现在字符串每个字符间插入一个空格的功能
- 字符串的复制函数,用my_strcpy(char *s, const char *t)
- c++ 字符串分割一、用strtok函数进行字符串分割 原型: char *strtok(char *str, const char *delim); 功能:分解字符串为一组字符串。 参数说明:
- 练习 5-3 用指针实现函数strcat(s,t)将t指向的字符串复制到s指向的字符串的尾部。
- C和指针之字符串编程练习10(判断字符串是否是回文数)
- 用C++实现void reverse(char* str)函数,即反转一个null结尾的字符串.
- Linux_C练习:利用指针数组实现字符串的排序。(从键盘获取五个字符串)
- 使用C语言递归与非递归实现字符串反转函数char *reverse(char *str)的方法