以下代码在两个字符串中找到公共字符,并返回指向公共字符串的指针(如果有)。我试图在不使用任何内置函数或下标的情况下模拟strpbrk函数。
#include <stdio.h>
#include <stdlib.h>
char *find_char( char const *source, char const *chars ){
char* str1;
char* str2;
if (source == NULL || chars == NULL)
return NULL;
else {
for( *str1=&source != '\0'; ++str1;){
for( *str2=&chars != '\0'; ++str2;){
if (*str1 == *str2)
return str1;
else return NULL;}
}
}
}
char* main(){
char const *source = "ab";
char const *chars = "bc";
find_char(source, chars);
}
但是我收到以下错误
运行“/home/ubuntu/workspace/hello-c-world.c”
bash:第12行:29755分段错误“$ file.o”$ args
流程退出代码:139
我是C的初学者,学习如何操作指针,请让我知道我做错了什么以及如何加强我的C编程技巧,现在我主要使用Kenneth Reek的书“C指针”
由于
答案 0 :(得分:0)
各种ìf
逻辑和失控指针问题。固定代码如下:
char *find_char( char const *source, char const *chars ){
char* str1;
char* str2;
if (source != NULL && chars != NULL) {
for( str1=source; *str1; str1++){
for( str2=chars; *str2; str2++){
if (*str1 == *str2) return str1;
}
}
}
return NULL;
}
char* main(){
char const *source = "ab";
char const *chars = "bc";
char *x;
x = find_char(source, chars);
if (x != NULL) printf("%c", *x);
}