肯尼斯·里科《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,还需要调试一下。

相关推荐
草莓熊Lotso2 小时前
《算法闯关指南:优选算法-双指针》--01移动零,02复写零
c语言·c++·经验分享·算法·leetcode
wan5555cn7 小时前
多张图片生成视频模型技术深度解析
人工智能·笔记·深度学习·算法·音视频
Broken Arrows8 小时前
Linux学习——管理网络安全(二十一)
linux·学习·web安全
今天也要学习吖8 小时前
谷歌nano banana官方Prompt模板发布,解锁六大图像生成风格
人工智能·学习·ai·prompt·nano banana·谷歌ai
雁于飞8 小时前
vscode中使用git、githup的基操
笔记·git·vscode·学习·elasticsearch·gitee·github
rannn_1119 小时前
【Javaweb学习|实训总结|Week1】html基础,CSS(选择器、常用样式、盒子模型、弹性盒布局、CSS定位、动画),js(基本类型、运算符典例)
css·笔记·学习·html
Ro Jace9 小时前
心灵笔记:第一性原理学习与实践
笔记
索迪迈科技9 小时前
基于野火F407开发板实现电源管理-停止模式
c语言·stm32·单片机·嵌入式硬件·mcu
小莞尔9 小时前
【51单片机】【protues仿真】基于51单片机宠物投食系统
c语言·stm32·单片机·嵌入式硬件·51单片机