2009-03-06 15 views
2

ArkadaşlarBir String in Junk Karakterlerini Aranıyor

Aşağıdaki kodu ana uygulama koduna dahil etmek istiyorum. o/p dizesiyle kalabalık gelip önemsiz karakterler

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]); 

     } 
    } 
} 

birisi .. Bir dizede önemsiz karakterleri bulmak için bana daha iyi yaklaşımlar edebilirmisiniz .. uygulamayı Aşağıdaki kod snipette çalışmıyor döker

Many Thanks

+0

Bir dahaki sefere yardıma ihtiyacınız olduğunda, lütfen sorunuzu doğru biçimlendirmek için zaman ayırın. Kodun kod olarak tanınması için dört boşluk girintilidir. Sekmeleri kullanmayın. – OregonGhost

cevap

5

Sizin char muhtemelen imzalı olarak temsil edilir.

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

ihtiyaçlarınıza bağlı olarak, isprint daha iyi bir iş yapabilir, yazdırılabilir karakteri kontrol, uzay dahil:

if (!isprint((unsigned char)newString[i])) 
    ... 
int için yayın yaparken negatif bir tamsayı olur önlemek için yerine unsigned char bunu Cast

unsigned char'a dökmeniz gerektiğini unutmayın: isprint için girdi, 0 ve UCHAR_MAX arasındaki değerler için karakter değerleri gerektirir.

+0

(int i = 0; i ronan

+0

çalışmıyor, ilk imzasız char türünde olduğu gibi. yapmazsanız davranış tanımsızdır. Mevcut uygulamalar, bir dizide indekslenecek değeri kullanır. yayınlamazsanız, bazı rastgele konumlara endekslenir. Şanslar –

+0

olmak için bazı garip şeyler neden olduğu http://www.catb.org/~esr/faqs/smart-questions.html#id307849 ... –