2009-03-06 22 views
2

FreundeSuche nach Junk-Zeichen in einem String

ich den folgenden Code in den Hauptanwendungscode integrieren möchten. Die Junk-Zeichen, die mit dem o/p String besiedelten kommen Dumps die Anwendung Der folgende Code snipette nicht funktioniert ..

void stringCheck(char*); 

int main() 
{ 
    char some_str[] = "Common Application FE LBS Serverr is down"; 
    stringCheck(some_str); 
} 


void stringCheck(char * newString) 
{ 
    for(int i=0;i<strlen(newString);i++) 
    { 
     if ((int)newString[i] >128) 
     { 

TRACE(" JUNK Characters in Application Error message FROM DCE IS = "<<(char)newString[i]<<"++++++"<<(int)newString[i]); 

     } 
    } 
} 

Kann jemand bitte die bessere Ansätze zeigen mir Junk-Zeichen in einer Zeichenfolge zu finden ..

Vielen Dank

+0

Wenn Sie das nächste Mal um Hilfe bitten, nehmen Sie sich bitte die Zeit, Ihre Frage richtig zu formatieren. Der Code muss um vier Leerzeichen eingerückt sein, um als Code erkannt zu werden. Verwenden Sie keine Tabs. – OregonGhost

Antwort

5

Ihre char ist wahrscheinlich als signiert dargestellt. Wirf ihn zu unsigned char statt zu vermeiden, dass es eine negative ganze Zahl wird, wenn es int Gießen:

if ((unsigned char)newString[i] >128) 

Je nach Bedarf, isprint könnte einen besseren Job machen, für eine druckbare Zeichen Überprüfung, einschließlich Raum:

if (!isprint((unsigned char)newString[i])) 
    ... 

Beachten Sie, dass Sie in unsigned char umwandeln müssen: Eingabe für isprint erfordert Werte zwischen 0 und UCHAR_MAX als Zeichenwerte.

+0

for (int i = 0; i ronan

+0

wie ich schon sagte, zuerst auf unsigned char. Das Verhalten ist nicht definiert, wenn Sie dies nicht tun. Bei vorhandenen Implementierungen wird der Wert zum Indizieren in einem Array verwendet. Wenn Sie nicht casten, werden sie an einem beliebigen Ort indexieren. Die Chancen sind, dass es einige seltsame Dinge passieren lässt –

+0

auch http://www.catb.org/~esr/faqs/smart-questions.html#id307849 ... –

Verwandte Themen