Как напечатать символ тета на языке Си
Как напечатать символ тета на языке Си
Что я уже пробовал:
Ничего...понятия не имею..................
Я не могу печатать на консоли, но я прикрепляю программу, которая записывает текстовый файл, который можно открыть в блокноте (или блокноте++)
Спецификация UTF-8 подробно описана в Википедии, и код основан на ней. Существует также закомментированный код со ссылкой.
#include <stdio.h> #define MAX_PRINT 25 int codepoint2utf8(unsigned char *utf8, unsigned int codepoint); int getbytecount(unsigned int codepoint); unsigned int alpha = 0x3b1; // UNICODE value for ALPHA unsigned char utf8str[10]; unsigned char utf8_flag_bytes[] = { 0xef, 0xbb, 0xbf }; // these leading values at start of file (.txt) denote UTF-8 encoding char *filename = "greek.txt"; void main() { FILE *fp; int codelen; int i; fp = fopen(filename, "wb"); fwrite(utf8_flag_bytes, 1, 3, fp); // first write the UTF-8 signature to the start of file for(i = 0; i < MAX_PRINT; i++) { codelen = codepoint2utf8(utf8str, alpha + i); codelen += codepoint2utf8(utf8str + codelen, ' '); fwrite(utf8str, 1, codelen, fp); } fclose(fp); } int codepoint2utf8(unsigned char *utf8, unsigned int codepoint) { unsigned char byteval, mask, leadbyte = 0, countbit = 0; int numbytes, i; mask = 0x3f; // mask for continuation byes ie for extracting least significant 6 bits numbytes = getbytecount(codepoint); if(numbytes > 1) countbit = (1 << 7); for(i = numbytes - 1; i > 0; i--, countbit >>= 1) { byteval = (codepoint & mask) | (1 << 7); leadbyte |= countbit; // set next significant bit for each byte added codepoint >>= 6; // next 6 bits utf8[i] = byteval; } leadbyte |= (countbit | codepoint); utf8[i] = leadbyte; return numbytes; } int getbytecount(unsigned int codepoint) { unsigned int i, bits, continuations = 0, leadbits = 5; for(i = 31, bits = 0; i > 0 && bits == 0; i--) { if((1 << i) & codepoint) bits = i + 1; } if(bits <= 7) goto exitpoint; continuations = 1; // min value while(bits > leadbits + continuations * 6) // 'leadbits' is no of bits avail for coding in lead byte { // every continuation byte is of the form 10xxxxxx where 'xxxxxx' represents part codepoint value leadbits--; continuations++; } exitpoint: return (1 + continuations); // no of bytes reqd is 1(for lead byte) + no of continuation bytes } /* -- link http://stackoverflow.com/questions/4607413/c-library-to-convert-unicode-code-points-to-utf8 if (c<0x80) *b++=c; else if (c<0x800) *b++=192+c/64, *b++=128+c%64; else if (c-0xd800u<0x800) goto error; else if (c<0x10000) *b++=224+c/4096, *b++=128+c/64%64, *b++=128+c%64; else if (c<0x110000) *b++=240+c/262144, *b++=128+c/4096%64, *b++=128+c/64%64, *b++=128+c%64; else goto error; */
Похоже, он не ОП ;)
вупси ... похоже на него ... надо проверить в будущем...
Попробуй:
#include <stdio.h> int main() { printf("Theta: Θ\n"); return 0; }
Я не нахожу на своей клавиатуре ни одной клавиши, которая печатала бы символ тета, кроме того, я обнаружил, что ASCII 233 будет содержать символ тета, как вы ввели его через клавиатуру.
Вот как: Как ввести расширенные символы[^]
Зависит от обстоятельств-самый простой способ-просто скопировать и вставить символ. Вот что я сделал!
Имейте в виду, что Windows не использует ASCII - она использует Unicode, который является 16-битной "супер-версией" ASCII (которая технически является 7-битной, но имеет расширенную версию, которая является 8-битной и включает тета). Таким образом, вы хотите, чтобы тета Юникода была \u03f4 и могла (или не могла) быть введена как строковый символ в вашем C - в зависимости от того, что такое компилятор.
Понимаете, что я имею в виду, что копировать и вставлять проще? :смеяться:
Ну спасибо, но на клавиатуре моего ноутбука нет цифровой клавиатуры, только цифровые клавиши над алфавитами, я пытался использовать их, но это не сработало, как я могу сделать это без использования цифровой клавиатуры
Это должно сработать: смейтесь:
У богов Google есть ответ, который вы ищете...
Используемый поиск: тета символ шестнадцатеричное значение[^]
Ответ найден: Символ Юникода "греческая маленькая буква тета" (U+03B8)[^]
5 за такой полный ответ.
Я имею в виду показать, как Google _including_ соответствующие ключевые слова и последнее, но не менее важное, дать подсказку, какой ответ может помочь.
*смеяться*
:) Они-боги ... так легко найти то, что вы ищете... даже мои 75-летние родители находят это легко... и у них есть Логизомеханофобия[^] ;)