读书人

编纂函数string

发布时间: 2012-09-06 10:37:01 作者: rapoo

编写函数string
题目要求编写函数string_in,就是在字符串1中找到字符串2的位置。我已经编好了,但是有一个问题。具体见注释。
#include <stdio.h>
#include <string.h>
char * string_in (const char * s1, const char * s2);
int main (void)
{
char arr1[20], arr2[20];
printf ("String one:\n");
gets (arr1);
printf ("String two:\n");
gets (arr2);
printf ("%p\n", string_in (arr1, arr2));
return 0;
}

char * string_in (const char * s1, const char * s2)
{
while (*s1) //这里能不能改成while (s1 != NULL)?我试了一下不行,为什么?
{
if (strcmp (s1, s2) == 0)
return (char *)s2;
s1++;
}
return NULL;
}

[解决办法]
while (*s1) //这里能不能改成while (s1 != NULL)?我试了一下不行,为什么?
*s1 和 s1 是完全不同的两个东西
*s1一个是 char 类型
s1 一个是 char*类型
你想用这两个相互替换 行不通是正常的

这里*s1 相当于 *s1 != '\0'
就是s1指向的内存存储的值 不等于 '\0'

你写成 s1 != NULL
判断的是 s1 是不是指向NULL

读书人网 >C语言

热点推荐