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

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

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.函数中的任何地方都不应该使用下标引用。

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

#include 
#include 

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,还需要调试一下。

你可能感兴趣的:(C语言,c语言,笔记,学习,其他)