2013-04-12 3 views
0

Я пытаюсь найти следующий код, чтобы найти, есть ли запятая, за которой следует точка с запятой в массиве символов. Вот мой кодСравнение звезд в c?

char m[80]; 
char *p = m; 

while(p!=pend) 
{ 
    char *pend = m + strlen(m); 
    int i=0; 

    if(*p!=',' || *p!=';') 
    { 
     printf("DDD"); 
     char temp[2]; 
     temp[0] = *p; 
     temp[1] = '\0'; 
     strcat(m2, temp); 
    } 
    else if(*p==',' && (*(p+1)==';')) 
    { 
     printf("CCC"); 
     char temp[2]; 
     temp[0] = *p; 
     temp[1] = '\0'; 
     strcat(m2, temp); 
    } 
} 

Но проблема в том, накануне, хотя вход, например 12; 3 никогда он не приходит «еще тогда». Что я могу с этим поделать?

Спасибо

+0

Что происходит, когда вы выполняете код с помощью отладчика? – SecurityMatt

+0

На самом деле, я не могу делить его, потому что я пишу этот код в бизоне. – yrazlik

+1

Сделайте «raise (SIGINT)» в верхней части вашей функции и запустите его с включенным GDB. Вы не можете написать хороший код, если вы не можете его отладить. – SecurityMatt

ответ

2
if(*p!=',' || *p!=';') 

всегда будет истинным (*p не может быть как',' и ';'). Поскольку первый if всегда верен, то else if никогда не оценивается.

Я не уверен, что вы пытаетесь сделать с первым блоком if. Возможно, самым простым «исправлением» было бы просто удалить эту часть вашего кода.

+0

Спасибо, я понял это сейчас – yrazlik

2

Это не входит в else часть, потому что if часть всегда истинен (любой символ не равен либо ',' или к ';').

+0

О, да, как я этого не понимаю! Спасибо! – yrazlik