我已經獲得這個學校項目。我必須按捷克語規則按字母順序排列項目列表。之前,我越挖越深,我決定來測試它在一個16×16矩陣,所以我這樣做:無法將寬字符分配到寬字符字段。
typedef struct {
wint_t **field;
}LIST;
...
setlocale(LC_CTYPE,NULL);
....
list->field=(wint_t **)malloc(16*sizeof(wint_t *));
for(int i=0;i<16;i++)
list->field[i]=(wint_t *)malloc(16*sizeof(wint_t));
在其他功能我想指定一個字符。像這樣:
sorted->field[15][15] = L'C';
wprintf(L"%c\n",sorted->field[15][15]);
一切都很好。字符被打印。但是當我嘗試將其改爲
sorted->field[15][15] = L'Č';
它說:寬字符常量中的無關字符被忽略。 (Xcode)並且打印部分被跳過。 main.c文件是UTF-8。如果我試圖打印此:
printf("ěščřžýááíé\n");
它按照書面打印出來。我不確定是否應該使用wint_t或wchar_t分配內存,或者我是否正確地分配內存。我測試了它們,但都沒有工作。
複製[在寬字符常量中使用寬字符常量獲取「寬字符常量中的無關字符忽略」錯誤](http://stackoverflow.com/questions/3343553/using-wide-character-constants-with-clang-gets -extraneous-characters-in-wide-ch) - 重要的是clang不支持這種行爲。如果你真的需要它,試試GCC。 'printf()'的作用是因爲編譯器不必關心字符串中的字節。當你的終端看到這個序列*它*做正確的事情。 –
@CarlNorum嗯,我只是用gcc和簡單的代碼嘗試過它,並沒有打印任何東西。 http://pastebin.com/SZmTekYW – rojcyk