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

相关推荐
螺旋小蜗9 分钟前
Maven工具学习使用(十一)——部署项目到仓库
学习·maven·部署项目
大雄野比1 小时前
【scikit-learn基础】--『监督学习』之 岭回归
学习·回归·scikit-learn
FAREWELL000751 小时前
C#进阶学习(一)简单数据结构类之ArrayList、Stack、Queue、Hashtable
数据结构·学习·c#·queue·arraylist·stack·hash table
HinsCoder2 小时前
使用SSH解决在IDEA中Push出现403的问题
运维·笔记·git·ssh·github·intellij-idea
小文数模3 小时前
2025年认证杯数学建模C题完整分析论文(共39页)(含模型、可运行代码)
c语言·开发语言·数学建模
sealaugh323 小时前
AI(学习笔记第一课) 在vscode中配置continue
人工智能·笔记·学习
每次的天空3 小时前
Android学习总结之OKHttp拦截器和缓存
android·学习·okhttp
不知道叫什么呀3 小时前
【5G-A学习】ISAC通信感知一体化学习小记
学习·5g·aigc·我的ai老师
爱编程的鱼4 小时前
深入学习任何技术的实用指南
学习
点纭4 小时前
C 语言 第八章 文件操作
c语言·开发语言