0
我在與區域規劃問題,並與fgetws
功能從標準輸入讀取。段錯誤讀數寬面向流與區域設置
#include <stdio.h>
#include <locale.h>
#include <wchar.h>
static const int N = 2;
int main(void) {
setlocale(LC_ALL, "");
wchar_t data[N];
fgetws(data, N, stdin);
printf("%ls\n", data);
/* fclose(stdin); */
return 0;
}
當輸入足夠長(5個或更多字符)我得到段錯誤,如果我不return
之前關閉stdin
。這是爲什麼?這個程序有什麼問題?
剛看到這一點。評論已刪除。 –
數據不是空終止的。您將需要null終止它來打印它。 – cup
我爲什麼這樣做?從glibc的手冊:'fgetws(wchar_t的* WS,詮釋計數,FILE * STREAM)'必須提供COUNT價值的WS空間寬字符,但字符的讀取數量最多COUNT - 1.多餘的字符空間使用在字符串末尾保持空寬字符。 – trupanka