我是C语言的新手,我遇到了这个问题。任何人都可以帮我解答。
尝试编写一个有两个参数都是字符串类型的函数。返回值告诉您第一个字符串是否是第二个参数字符串的子字符串
答案 0 :(得分:2)
#include <stdbool.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
bool contains_substring(const char *str1, const char *str2) {
if (strstr(str1, str2) != NULL) {
return true;
}
else {
return false;
}
}
int main() {
const char *str1 = "This is a test";//this is the string that you will be comparing against
const char *str2 = "test";//this is the substring you're searching for.
if (!contains_substring(str1, str2)) {
printf("No match found!\n");
}
else {
printf("String 1 contains String 2\n");
}
return 0;
}
注意:因为此示例使用stdbool作为bool类型,所以此示例必须使用带有gcc的C99选项-std=c99
或像clang这样的相关编译器进行编译,如下所示:
gcc inputfile.c -std=c99 -o outputbinaryfilename
当然,您可以通过将bool定义为以下(来自here)来规避包含该库并使用其他编译器选项:
typedef int bool;
#define false 0
#define true 1
答案 1 :(得分:0)
这是一个未经优化的strstr
char *strstr(char *haystack, char *needle){
if (!needle[0]) return haystack;
unsigned int i;
while (*haystack){
while (haystack[0]!=needle[0])haystack++;
i=1;
while (haystack[i] && needle[i] && haystack[i]==needle[i++]);
if (!needle[i]) return haystack;
else haystack+=i;
}
return haystack;
}
或优化版本: http://git.musl-libc.org/cgit/musl/tree/src/string/strstr.c
答案 2 :(得分:0)
您希望使用函数strstr在c语言中查找子字符串。例如 -
char s1[] ="hello world";
char * s2;
s2 = strstr (str,"world"); // s2 will be null pointer if it is not the substring
// else s2 will point to first occurrence of substring
if(!s2)
// return true
else
// return false
你应该试着弄清楚如何自己传递字符串:)