我需要C语言中的Strings帮助

时间:2013-09-26 04:34:55

标签: c string function

我是C语言的新手,我遇到了这个问题。任何人都可以帮我解答。

尝试编写一个有两个参数都是字符串类型的函数。返回值告诉您第一个字符串是否是第二个参数字符串的子字符串

3 个答案:

答案 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

REFERENCE http://en.cppreference.com/w/c/string/byte/strstr

答案 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

你应该试着弄清楚如何自己传递字符串:)