2014-09-10 2 views
0
#include<stdio.h> 
#include<malloc.h> 
#include<string.h> 
int main(){ 
     char* path = "lost+found/d1/dentry"; 
     char* str = malloc(100); 
     char *temp; 
     if(NULL == str) perror("malloc failed"); 
     temp = str; 
     while(*path != '/'){ 
       *str++ = *path++; 
     } 
     *str = '\0'; 
     str = temp; 
     printf("\n str : %s \n",str); 
     return 0; 
} 

о/р:Извлечение строки из разделителя «/»

str : lost+found 

Есть ли функция библиотеки, которая может извлечь только строку с разделителем «/» [strrchr и srchr дает последний и первые вхождения «/», но строка, которую я ищу, потеряна + найдена].

+4

Посмотрите на 'strtok'. – urzeit

+1

См. ['Strtok_r'] (http://linux.die.net/man/3/strtok_r) – P0W

+2

@ P0W:' strtok_r' не C, а POSIX, просто чтобы запомнить это. – urzeit

ответ

0

strtok - самый прямой способ, который библиотека C может предложить, чтобы токенизировать строку. Есть некоторые глюки с ним, хотя:

  • строка, которую вы хотите разметить не может быть константной
  • изменяется данная строка во время strtok вызовов

Если вам нужен только первый сегмент в том, что путь (как подсказывает вопрос), и не все «/» -граничные токены strchr также могут пригодиться (наряду с strcpy и некоторой арифметикой указателя).

Смежные вопросы