Взять подстроку из строки в C - PullRequest
1 голос
/ 23 декабря 2011

У меня есть строка «С Рождеством». Я хочу отделить это как «С Рождеством» и «Рождество». В Objective c я мог бы сделать это легко componentsSeparatedByString:. Как это сделать в C?

Ответы [ 6 ]

1 голос
/ 23 декабря 2011

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);
1 голос
/ 23 декабря 2011

Вы должны написать свою собственную функцию.Библиотека C включает в себя strtok(), strspn() and strcspn(), а то, что вы называете String, является массивом char (который заканчивается \0).

1 голос
/ 23 декабря 2011

Стандартным способом в pure C является использование strtok, хотя это довольно опасная и деструктивная функция (она изменяет передаваемый в символьный буфер).

В C ++ есть лучшие способы; смотрите здесь: Как мне токенизировать строку в C ++?

1 голос
/ 23 декабря 2011

попробуй поискать strtok()

0 голосов
/ 23 декабря 2011

Для подстроки используйте strndup.Для токенизации / расщепления используйте strtok.

0 голосов
/ 23 декабря 2011

Вы можете использовать strtok , чтобы разбить строку в C.

...