我写一个程序,获取作为输入包含下列字符的任意字符串:使用strpbrk分隔字符串,分隔符为“>>”?
& , > , < , SPACE (e.g " ")
的分隔符是这样写的:char delimiters[] = " &<>";
,我用它们与strpbrk
命令。我需要将分隔符">>"
添加到此组。我怎样才能做到这一点 ?
如果我只是写:char delimiters[] = " &<>>>";
,编译器不会因此治疗>>
。
不知道如何解决这个问题?
感谢
我写一个程序,获取作为输入包含下列字符的任意字符串:使用strpbrk分隔字符串,分隔符为“>>”?
& , > , < , SPACE (e.g " ")
的分隔符是这样写的:char delimiters[] = " &<>";
,我用它们与strpbrk
命令。我需要将分隔符">>"
添加到此组。我怎样才能做到这一点 ?
如果我只是写:char delimiters[] = " &<>>>";
,编译器不会因此治疗>>
。
不知道如何解决这个问题?
感谢
#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;
}
strpbrk
使用char
S作为分隔符,而">>"
不是一个字符,所以你不能只是用它作为分隔符。既然你已经有了'>'
作为分隔符,你可以把一个特殊的情况,当你连续看到两个。
谢谢,也许任何的例子吗? – ron
@ron:会不知道没有看到你如何解析输入 –