2009-03-06 8 views
2

ДрузьяПоиск символов нежелательной почты в строке

Я хочу интегрировать следующий код в основной код приложения. Нежелательная символы, которые приходят заселена с о/р строки отвалов приложение Следующий код snipette не работает ..

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

     } 
    } 
} 

Может кто-то пожалуйста, покажите мне лучше всего подходит для поиска ненужных символов в строке ..

Many Thanks

+0

В следующий раз, когда вы просите о помощи, пожалуйста, найдите время, чтобы правильно отформатировать свой вопрос. Код должен быть отступом четырьмя пробелами, которые должны быть распознаны как код. Не используйте вкладки. – OregonGhost

ответ

5

Возможно, что ваш char подписан подписан. Бросьте его в unsigned char вместо того, чтобы избежать этого становится отрицательным целое при литье в int:

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

В зависимости от ваших потребностей, isprint может сделать лучшую работу, проверяя для печати характера, в том числе и пространства:

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

Обратите внимание, что вам необходимо указать значение unsigned char: для ввода значений isprint требуются значения между 0 и UCHAR_MAX в качестве значений символов.

+0

for (int i = 0; i ronan

+0

, как я уже сказал, бросил на unsigned char первым. поведение не определено, если вы этого не сделаете. существующие реализации используют значение для индексации в массиве. если вы не бросаете, они будут индексироваться в произвольное место. Скорее всего, это приводит к некоторым странным вещам. –

+0

также http://www.catb.org/~esr/faqs/smart-questions.html#id307849 ... –

Смежные вопросы