从C中的字符串中获取子字符串

时间:2011-12-23 09:59:43

标签: c whitespace substring

我有一个字母'圣诞快乐'。我想把这个分开为'Merry'和'Christmas'。在Objective c中,我可以通过componentsSeparatedByString:轻松完成。如何在C中执行此操作?

6 个答案:

答案 0 :(得分:1)

尝试寻找strtok()

答案 1 :(得分:1)

纯C 中的标准方法是使用strtok,虽然它是一个相当危险和破坏性的函数(它修改传入的字符缓冲区)。

C ++ 中,有更好的方法;见这里:How do I tokenize a string in C++?

答案 2 :(得分:1)

你必须编写自己的功能。 C库包含strtok(), strspn() and strcspn(),你所谓的String是一个char数组(以\0结尾)。

答案 3 :(得分:1)

strtok是字符串标记化的通用解决方案。更简单,更有限的方法是使用strchr:

#include <string.h> // strchr, strcpy
#include <stddef.h> // NULL

const char str[] = "Merry Christmas";
const char* ptr_merry = str;
const char* ptr_christmas;

ptr_christmas = strchr(str, ' ');

if(ptr_christmas != NULL)
{
  ptr_christmas++; // point to the first character after the space
}


// optionally, make hard copies of the strings, if you want to alter them:
char hardcpy_merry[N];
char hardcpy_christmas[n];
strcpy(hardcpy_merry, ptr_merry);
strcpy(hardcpy_christmas, ptr_christmas);

答案 4 :(得分:0)

您可以使用strtok在C中拆分字符串。

答案 5 :(得分:0)

对于子字符串使用strndup。对于标记化/拆分,请使用strtok