2012-05-22 114 views
0

我写一个程序,获取作为输入包含下列字符的任意字符串:使用strpbrk分隔字符串,分隔符为“>>”?

& , > , < , SPACE (e.g " ") 

的分隔符是这样写的:char delimiters[] = " &<>";,我用它们与strpbrk命令。我需要将分隔符">>"添加到此组。我怎样才能做到这一点 ?

如果我只是写:char delimiters[] = " &<>>>";,编译器不会因此治疗>>

不知道如何解决这个问题?

感谢

回答

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

char *strpbrkEx(const char *str, char **strs){ 
    char *minp=(char*)-1, *p; 
    if(NULL==str || NULL==strs)return NULL; 
    while(*strs){ 
     p=strstr(str, *strs++); 
     if(p && minp > p) 
      minp = p; 
    } 
    if(minp == (char*)-1) return NULL; 
    return minp; 
} 

int main(){ 
    char *delimiters[] = {" ","&","<",">>",">", NULL}; 
    char data[]="cin>> num;"; 
    char *p; 
    p = strpbrkEx(data, delimiters);//found ">>" but case of ">" distinction does not adhere 
    printf("%s",p); 
    return 0; 
} 
4

strpbrk使用char S作为分隔符,而">>"不是一个字符,所以你不能只是用它作为分隔符。既然你已经有了'>'作为分隔符,你可以把一个特殊的情况,当你连续看到两个。

+0

谢谢,也许任何的例子吗? – ron

+0

@ron:会不知道没有看到你如何解析输入 –