- 打卡等级:常住居民III
- 打卡总天数:143
- 最近打卡:2025-04-29 09:29:30
高级会员
- 积分
- 982
|
本帖最后由 yzhkpli 于 2024-10-11 16:00 编辑
#include <stdio.h>
#include <stdlib.h>
//自定义的计算字符串的长度
int my_strlen(char *string){
int length=0;
while(*string!='\0'){
length++;
string++;
}
return length;
}
int find_char(char **strings,char value);
int main(void){
char *name="Bill Gates";
int length=strlen(name);
char *strs[5];
char *s1="A string";
char *s2="Another";
char *s3="Third";
char *s4="Last";
char *s5="";
strs[0]=s1;
strs[1]=s2;
strs[2]=s3;
strs[3]=s4;
strs[4]=s5;
printf("name points to string length :%d\n",length);//10
printf("name points to string length :%s,%d\n",name,my_strlen(name));
//int x1=find_char(strs,'K');
//printf("x1:%d",x1);
if(find_char(strs,'K')){
printf("找到了\n");
}else{
printf("找不到\n");
}
system("pause");
return 0;
}
int find_char(char **strings,char value){
char *string;
while((string=*strings++)!=NULL){
while(*string++!='\0'){
if(*string==value){
return 1;
}
//string++;
}
}
return 0;
}
这段代码的诡异之处在于,如果删掉与指针数组无关的,也就是仅仅下面的部分
#include <stdio.h>
#include <stdlib.h>
int find_char(char **strings,char value);
int main(void){
char *strs[5];
char *s1="A string";
char *s2="Another";
char *s3="Third";
char *s4="Last";
char *s5="";
strs[0]=s1;
strs[1]=s2;
strs[2]=s3;
strs[3]=s4;
strs[4]=s5;
//int x1=find_char(strs,'K');
//printf("x1:%d",x1);
if(find_char(strs,'t')){
printf("找到了\n");
}else{
printf("找不到\n");
}
system("pause");
return 0;
}
int find_char(char **strings,char value){
char *string;
while((string=*strings++)!=NULL){
while(*string++!='\0'){
if(*string==value){
return 1;
}
//string++;
}
}
return 0;
}
完全执行正常!!!
求教到底是哪里导致了问题。
|
|