1

我有以下宽字符数组:

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]);
}

我该如何纠正这个错误?

4

2 回答 2

3

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

于 2013-11-19T15:47:58.910 回答
2

您的循环超出了数组。

数组从 0 开始索引,所以像你这样的循环中的条件应该总是用 测试<,而不是用<=

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

于 2013-11-19T15:25:47.593 回答