Вопрос:
У меня возникла проблема с этой ошибкой. Обратите внимание, что я немного новичок в программировании c, и им не нравится эта случайная ошибка.
Это моя ошибка:
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; } }
Может ли кто-нибудь сказать мне, как я могу решить эту проблему? Благодарю.
Лучший ответ:
u используется с id (шестнадцатеричным кодом) для представления символа юникода, например u20AC – это код для €. Это не может быть само по себе.
Ответ №1
‘ u’ означает символ Юникода, и он написан неправильно в коде, правильный формат, например:
‘ U2006’
u должны следовать 4 цифры, представляющие символ.
Ответ №2
Чтобы немного расширить некоторые из других ответов: когда вы используете escape-последовательность, он обрабатывается как ОДИН символ. n – один символ, несмотря на то, что набирается два нажатия клавиш.
Впоследствии, u1234 является ОДНОМ персонажу для компьютерной перспективы. u не имеет значения: вы дали ему код с половиной символа.
Что касается того, как вы это исправите, это зависит от того, что вы хотите сделать. Если вы пытаетесь поймать только один конкретный символ юникода, измените оператор switch на case ‘u1234’: где 1234 – это шестнадцатеричное представление вашего символьного кода.
Если вместо этого вы хотите иметь дело с символами, не представленными в ASCII по-разному, тогда вам может понадобиться нечто похожее на:
if(ch < 128) { // Check for n, t and space here } else { // Unicode or ANSI codepage }