第六章编程练习第一题

题目:请编写一个函数,它在一个字符串中进行搜索,查找所有在一个给定字符串集合中出现的字符。这个函数的原型应该如下:
char *find_char(char  *source, char  *chars);

它的基本功能是:

1.查找source字符串中匹配chars字符串中任何字符的第一个字符,然后函数返回一个指向source中第一个匹配所找到的位置的指针。

2.如果scource中的所有字符均布匹配chars中的任何字符,函数就返回一个NULL指针。

3.如果任何一个参数为NULL,或任何一个参数所指向的字符串为空,函数野返回一个NULL指针。

例如:假定source指向ABCDEF。如果chars指向XYZ、JURY或QQQQ,函数就返回一个NULL指针。如果chars指向XRCQEF,函数就返回一个指向source中C字符的指针。参数所指向的字符串是绝不会被修改的。

要求:

a.你不应该使用任何用于操纵字符串的库函数(如strcpy,strcmp,index等);

b.函数中的任何地方都不应该使用下标引用。

//*********************************************************************************************************************

#include<stdio.h>
char *find_char(char  *source, char  *chars);
int main()
{
	char C1[] = "bbbbgggghhhh";
	char C2[] = "aaaassss";
	printf("%c\n",*find_char(C1, C2));
	return 0;
}
char *find_char(char  *source, char  *chars)
{
	char a = 0;
	int k = 0;
	int l = 0;
        char *null=NULL;//返回的NULL指针;
	char  *i = &a;
	char  *j = &a;
	int n1 = 0;
	int n2 = 0;
	i = source;
	j = chars;
	while (*i != '\0') {
		n1++;
		i++;
	}//计算出source数组的长度;n1,即为source字符串的长度;
	printf("%d\n", n1);
	while (*j != '\0') {
		n2++;
		j++;
	}//计算出chars数组的长度;n2,即为chars字符串的长度;
	printf("%d\n", n2);
	i = source;
	j = chars;
	for (k;k < n1;k++) {
		j = chars;
		l = 0;
		for (l;l < n2;l++) {
			if (*i == *j) {
				return i;
			}
			if (*i == NULL || *j == NULL) {
				return null;
			}
			j++;
		}
		i++;
	}
	return null;
}
	
/* 对于这个要求: 3.如果任何一个参数为NULL,或任何一个参数所指向的字符串为空,函数野返回一个NULL指针。
for (k;k < n1;k++) 
for (l;l < n2;l++) 
这两个判断语句已经可以判断字符串是否为空,为空的话n1||n2==0;那么不管是经过循环还是直接跳出循环返回NULL都是符合要求的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值