2013-04-12 33 views
0

我正在嘗試下面的代碼,試圖查找在char數組中是否有逗號後跟分號。這裏是我的代碼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

其實,我不能去debig,因爲我在野牛文件中寫這段代碼。 – yrazlik

+1

在函數的頂部執行「raise(SIGINT)」,並使用附加的GDB運行它。如果您無法調試,則無法編寫出色的代碼。 – SecurityMatt

回答

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

將永遠是真(*p不能','和​​3210)。由於第一個if始終爲真,因此不會評估以下else if

我不確定你想用第一個if塊做什麼。也許最簡單的'修復'將只是刪除你的代碼的一部分。

+0

謝謝,我現在意識到了 – yrazlik

2

它不進入else部分原因是由於if部分結果始終爲true(任何字符不等於或者','或​​3210)。

+0

哦,是的,我怎麼能意識到這一點!謝謝! – yrazlik