肯尼斯·里科《C和指针》第6章 指针(6)编程的练习:查找字符

1.编写一个函数,它在一个字符串中进行搜索,查找在一个给定字符集合中出现的所有字符。这个函数的原型如下:

cpp 复制代码
char *find_char( char const *source, char const *chars );

它的基本想法是查找source字符串中匹配chars字符串中任何字符的第1个字符,然后返回一个指向source中第1个匹配所找到的位置的指针。如果source中的所有字符均不匹配chars中的任何字符,就返回一个NULL指针。如果任何一个参数为NULL,或任何一个参数所指向的字符串为空,函数也返回一个NULL指针。**举个例子,假定source指向ABCDEF,如果chars指向XYZ、JURY或QQQQ,函数就返回一个NULL指针;如果chars指向XRCQEF,函数就返回一个指向source中C字符的指针。**参数所指向的字符串是绝不会被修改的。

碰巧,C函数库中存在一个名叫strpbrk的函数,它的功能几乎和这个要编写的函数一模一样。但这个程序的目的是让你自己练习操纵指针,所以:a.不应该使用任何用于操纵字符串的库函数(如strcpy、strcmp、index等);b.函数中的任何地方都不应该使用下标引用。

书没有答案,下面是我自己写的:

cpp 复制代码
#include <stdio.h>
#include <stdlib.h>

char *find_char(char const *source, char const *chars)
{
    char* sol = NULL;
    char* s_str;
    char* c_str;
 
    for(s_str = source; *s_str != '\0'; s_str++){
        for(c_str = chars; *c_str != '\0'; c_str++){
            if(*c_str == *s_str){
                sol = s_str;
                printf("%c",*sol);
            }
        }
    }
    return sol;
}

int main(){
    char const source[] = "ABCDEF";
    char const  chars[] = "XRCQEF";
    find_char(source, chars);
}

在虚拟机里运行了一下,是可以的。但是是否存在其他bug,还需要调试一下。

相关推荐
超级大只老咪1 小时前
快速进制转换
笔记·算法
qq_403742551 小时前
Ubuntu 24.04 安装 LaTeX + VSCode 环境指南
vscode·其他
Fᴏʀ ʏ꯭ᴏ꯭ᴜ꯭.3 小时前
Keepalived VIP迁移邮件告警配置指南
运维·服务器·笔记
Tingjct3 小时前
【初阶数据结构-二叉树】
c语言·开发语言·数据结构·算法
ling___xi4 小时前
《计算机网络》计网3小时期末速成课各版本教程都可用谢稀仁湖科大版都可用_哔哩哔哩_bilibili(笔记)
网络·笔记·计算机网络
飞机和胖和黄4 小时前
考研之王道C语言第三周
c语言·数据结构·考研
星火开发设计4 小时前
类型别名 typedef:让复杂类型更简洁
开发语言·c++·学习·算法·函数·知识
醉颜凉4 小时前
【LeetCode】打家劫舍III
c语言·算法·leetcode·树 深度优先搜索·动态规划 二叉树
一匹电信狗5 小时前
【LeetCode_21】合并两个有序链表
c语言·开发语言·数据结构·c++·算法·leetcode·stl