最近在看《C和指针》,做了一些课后习题,记录下。
题目出处:6.18编程练习,第2题
以下是我的解答:
/*说明:str="123qwe456",
若substr=789,返回0;
若substr=qwe,则返回123456;*/
int del_substr( char *str, char const *substr )
{
char *tmp;
while( *str != '\0' )
{
if( *substr == *str )
{
tmp = str;
while( *substr != '\0' )
{
if( *str++ != *substr++ )
return 0;
}
if( *substr == '\0' )
{
while( *str != '\0' )
*tmp++ = *str++;
*tmp = '\0';//此处要加'\0',把后面的垃圾信息给截掉
return 1;
}
}
str++;
}
}
以下是测试代码:
#include<stdio.h>
#define LEN 50
int main(void)
{
int del_substr( char *str, char const *substr );
//char *str1 = "qwertyuiop";//1.这是一个字符串常量,存储在常量区,只能读,不能写
char str1[LEN] = "qwertyuio";//2.定义的是数组,分配了内存
char str2[LEN];
printf("please input a string:");
gets(str2);
printf("str1:%s\n",str1);
printf("str2:%s\n",str2);
if( 0 == del_substr(str1, str2))
printf("str2 is not a part of str1.\n");
else{
printf("str2 is a part of str1,and the new string is:\n");
printf("str1:%s\n",str1);
}
return 0;
}
以下是运行结果: