2013-06-04 6 views
-1

У меня возникла проблема с этой ошибкой. Обратите внимание, что я немного новичок в программировании c, и им не нравится эта случайная ошибка.C ошибка «неполное универсальное имя персонажа u»

Это моя ошибка:

incomplete universal character name \u 

и это мой код (его часть):

while((ch=getchar())!=EOF) 
{ 
    ++caractere; 
    switch(ch) 
    { 
     case '\n': ++linii;break; 
     case '\t': ++cuvinte;break; 
     case ' ': uiWord=YES;break; 
     case '\u': if(uiWord==YES) 
     { 
      ++cuvinte; 
      uiWord=NO; 
     } 
     break; 
    } 

} 

Может кто-нибудь сказать мне, как я могу решить эту проблему? Благодарю.

+2

Какой персонаж вы пытаетесь захватить с 'случае«\ u''? –

+0

«a» до «z», «1» - «9» и любой другой стандартный символ, кроме «.» –

+2

Оператор 'case' не выполняет регулярные выражения. (и даже если бы это было так, '\ u' не соответствовало бы этому. – geoffspear

ответ

5

\u используется с идентификатором (шестнадцатеричный код) для представления Юникода характера, например \u20AC код для . Это не может быть само по себе.

+0

Я понимаю. спасибо. Мне было непонятно, так как ive никогда не использовал его –

1

«\ и» означает юникод характер и написано неправильно в вашем коде, правильный формат является, например:

«\ u2006»

\ и должно следовать 4 цифры, представляющей персонаж.

+1

Четыре символа на самом деле, это шестнадцатеричный код. – Djon

+0

Я понимаю. это было непонятно для меня, так как ive никогда не использовал его –

+5

@Djon Четыре шестнадцатеричных цифры. – unwind

1

Чтобы немного расширить некоторые из других ответов: когда вы используете escape-последовательность, это рассматривается как ОДИН символ. \n - один персонаж, несмотря на то, что он два нажатия клавиши.

Впоследствии \u1234 - ОДИН персонаж с точки зрения компьютера. \u не имеет никакого значения: вы дали ему пол-символьный код.

Как вы это исправите, это зависит от того, что вы хотите сделать. Если вы пытаетесь поймать только один конкретный символ юникода, измените оператор switch на case '\u1234':, где 1234 - это шестнадцатеричное представление кодового пункта вашего персонажа.

Если, вместо этого, вы хотите иметь дело с символами, не представимых в ASCII по-разному, то вы можете что-то похожее на:

if(ch < 128) 
{ 
// Check for \n, \t and space here 
} 
else 
{ 
// Unicode or ANSI codepage 
} 
Смежные вопросы