本文共 2039 字,大约阅读时间需要 6 分钟。
以下是我的练习代码:
#include<stdio.h>
#include<ctype.h> #include<string.h> #include<assert.h> #define MAX 100 bool find_char1(char **strings,char value); bool find_char2(char **strings,char value); const char * find_char(char const * source,char const * chars); int main() { //char * str1="sunxiaowu"; //char *str2="xiaowu"; char str1[MAX]={0}; char str2[MAX]={0}; const char * str3; printf("请输入两个字符串(以空格隔开)\n"); scanf("%s",str1); scanf("%s",str2); str3=find_char(str1,str2); if(str3) { printf("匹配成功,匹配的第一个字符是%c\n",*str3); } return 0; }const char * find_char(char const * source,char const * chars)
{ const char * source1=source; const char * chars1=chars; if(source1 != NULL && source1 !="" && chars1 !=NULL && chars1 !="") { while (*source1) { while(*chars1) { if(*chars1==*source1) { return chars1; } ++chars1; } chars1=chars; ++source1; } } return NULL; } 书籍上的正确答案:char * find_char_book(char const *str,char const * chars)
{ char * cp; if(str != NULL && chars != NULL) { for(; *str!="\0"; ++str) { for(cp = chars; *cp!="\0"; ++cp) if(*str == *cp) return str; } } return NULL; }比较两者,个人认为答案的方法简单一些。两者之间的主要区别在于while和for的循环。我本想while(*source1++) 这种方式来循环,但是发现当使用这种方式时,source1指针会在此句执行之后(括号中语句执行之前)自动向前移一位,不行(因为我的目的是在括号中的语句执行之后再指针前移),而for(;*str!='\0";++str)这句就有我想要的效果,而且简洁),而source循环中嵌套的chars循环中,若使用while(*char1),则总体循环完成之后还要chars1=chars;指针还原。但若是使用for(cp = chars;*chars!="\0";++chars),则刚好符合条件,语句又简洁。
答案:
char *match(char *str,char *want)
{ while (*want != '\0') { if(*str++ != *want++) return NULL; } return str; } bool del_substr_book(char *str,char *substr) { char *next; while(*str != NULL) { next=match(str,substr); if(next != NULL) break; str++; } if(*str == '\0') return false; while (*str++ = *next++); //此句有问题 return true; }我的答案:
void reverse_string(char * string)
{ char * reverse_pt=string; while(*reverse_pt++); int count_num=reverse_pt-string-1; for(reverse_pt=string;count_num>1; count_num--) ++reverse_pt; char tmp; for(;*reverse_pt != *string;reverse_pt--,string++) { tmp=*reverse_pt; *reverse_pt=*string; *string=tmp; } }编程练习:
我的答案: