вхождение строки в c - PullRequest
       3

вхождение строки в c

0 голосов
/ 19 апреля 2010

У меня есть строка как const char *str = "Hello, this is an example of my string";

Как я мог получить все после первой запятой. Так что для этого экземпляра: this is an example of my string

Спасибо

Ответы [ 4 ]

2 голосов
/ 19 апреля 2010

Поскольку вам нужен хвост исходной строки, нет необходимости копировать или изменять что-либо, поэтому:

#include <string.h>

...
const char *result = strchr(str, ',');

if (result) {
    printf("Found: %s\n", result+1);
} else {
    printf("Not found\n");
}

Если вам нужны идеи, как сделать это самостоятельно (полезно, если позже вы захотите сделать что-то похожее, но не идентичное), взгляните на реализацию strchr .

2 голосов
/ 19 апреля 2010

Вы можете сделать что-то похожее на то, что вы опубликовали:

char *a, *b;
int i = 0;
while (a[i] && a[i] != ',')
   i++;
if (a[i] == ',') {
   printf("%s", a + i  + 1);
} else {
   printf("Comma separator not found");
}

Кроме того, вы можете взглянуть на strtok и strstr .

С strstr вы можете сделать:

char *a = "hello, this is an example of my string";
char *b = ",";
char *c;
c = strstr(a, b);
if (c != NULL)
   printf("%s", c + 1);
else
   printf("Comma separator not found");
0 голосов
/ 19 апреля 2010

У вас правильная идея, следующие программы - это один из способов:

#include <stdio.h>
#include <string.h>

static char *comma (char *s) {
    char *cpos = strchr (s, ',');
    if (cpos == NULL)
        return s;
    return cpos + 1;
}

int main (int c, char *v[]) {
    int i;
    if (c >1 )
        for (i = 1; i < c; i++)
            printf ("[%s] -> [%s]\n", v[i], comma (v[i]));
    return 0;
}

Было получено следующее:

$ commas hello,there goodbye two,commas,here
[hello,there] -> [there]
[goodbye] -> [goodbye]
[two,commas,here] -> [commas,here]
0 голосов
/ 19 апреля 2010
const char *result;
for(result = str; *result; result++)
   if(*result == ',')
   {
      result++;
      break;
   }
//result points to the first character after the comma

После этого кода result указывает на строку, начинающуюся сразу после запятой. Или до последнего '\ 0' (пустая строка), если в строке нет запятой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...