Как указывали другие, вы можете использовать strstr
от <string.h>
, чтобы найти разделитель в своей строке. Затем либо скопируйте подстроки, либо измените входную строку, чтобы разбить ее.
Вот реализация, которая возвращает вторую часть разделенной строки. Если строка не может быть разделена, она возвращает NULL
, а исходная строка не изменяется. Если вам нужно разбить строку на большее количество подстрок, вы можете вызвать функцию на хвосте несколько раз. Первая часть будет входной строкой, возможно, сокращенной.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *split(char *str, const char *delim)
{
char *p = strstr(str, delim);
if (p == NULL) return NULL; // delimiter not found
*p = '\0'; // terminate string after head
return p + strlen(delim); // return tail substring
}
int main(void)
{
char str[] = "A/USING=B";
char *tail;
tail = split(str, "/USING=");
if (tail) {
printf("head: '%s'\n", str);
printf("tail: '%s'\n", tail);
}
return 0;
}
Вы можете использовать ['strchr'] (http://en.cppreference.com/w/c/string/byte/strchr), чтобы найти' '/ '', '' = 'и'') '' и получить подстроки, используя, например, ['strncpy'] (http://en.cppreference.com/w/c/string/byte/strncpy) (или просто [' strcpy'] (http: //en.cppreference.com/w/c/string/byte/strcpy), если вы можете изменить исходную строку). –
Я только что узнал, что моя входная строка имеет точно '/ USING =' уникально, 'A' и' B', например, может включать в себя '\' или '=' – Ryo
Тогда как насчет ['strstr'] (http : //en.cppreference.com/w/c/string/byte/strstr), чтобы найти начальную позицию подстроки –