从C语言中的宽字符数组中打印元素

时间:2013-11-19 15:24:08

标签: c segmentation-fault wcs

我有以下数组的宽字符:

wchar_t alphabet[] = L"abcdefghijklmnñopqrstuvwxyz"; /*  array of wide characters */

每当我尝试运行以下代码时,都会发生“分段违规”错误

printf("%ls %d\n", alphabet, wcslen (alphabet));
int i;
for (i = 0; i <= wcslen (alphabet); i++)
{
    printf("%ls\n", alphabet[i]);
}

如何更正此错误?

2 个答案:

答案 0 :(得分:3)

"%ls"导致alphabet[i]被解释为指向字符串的指针。使用"%lc"

答案 1 :(得分:2)

你的循环超越了数组。

数组的索引是从0开始的,因此像你这样的循环中的条件应始终使用<进行测试,而不是使用<=进行测试。

另外,您使用%s打印单个字符,这也是错误的。对于单个宽字符,它应该是%lc