2013-03-15 62 views
0

我一直在阅读关于C的一些东西,我是一个初学者,在这一点上,这是我在哪里:检查字符串输入自定义字符

此功能保持从键盘输入:

void store_sequence(char *arg) { 
    strcpy(estado.seq, arg); 
    estado.tamanho = strlen(arg); 
} 

,这就是我来了这么远,检查是否有作为对插入键盘上的字符串:

void sequence_does_contain_As_and_Bs(char *arg) { 

    char buf [] = estado.seq; 

    s = strchr (buf, 'A'); 

    if (s != NULL) 
    printf ("found a 'A' at %s\n", s); 

} 

所以,基本上,我需要的,如果输入的字符串来检测只有As和Bs

回答

2

看一看这个 - http://www.cplusplus.com/reference/cstring/

特别strspn()strcspn()

+0

THans SpacedMonkey,我来到了这一点: 'int sequencia_nao_contem_so_As_e_Bs(字符* ARG) {i = 1,2,...,i} char cset [] =“CDEFGHIJLMNOPQRSTUVXYZcdefghijlmnopqrstuvxyz”; i = strspn(arg,cset); return(“%d”,i);因为我只想要A和B的“ABABABBABBBA”字符,但是如果我把HFDHDAB接受为 – Souza 2013-03-15 17:58:49

+0

'if(strspn(arg,“AB”),那么这将不允许我放置HGBGD并且它很好, )== strlen(arg))/ *只有As和Bs * /' – SpacedMonkey 2013-03-15 20:18:48

+0

先生,你是男人:) – Souza 2013-03-19 00:31:49

1

试试这个:

char buf [] = estado.seq; 
int len = estado.tamanho; 
int i; 
int contains = 1; 
for (i = 0; i < len; ++i) 
    if (buf[i] != 'A' && buf[i] != 'B') { 
     contains = 0; 
     break; 
    } 
if (contains) 
    // do whatever you want if the string contains only As and Bs