我有以下数组的宽字符:
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]);
}
如何更正此错误?
答案 0 :(得分:3)
"%ls"
导致alphabet[i]
被解释为指向字符串的指针。使用"%lc"
。
答案 1 :(得分:2)
你的循环超越了数组。
数组的索引是从0开始的,因此像你这样的循环中的条件应始终使用<
进行测试,而不是使用<=
进行测试。
另外,您使用%s
打印单个字符,这也是错误的。对于单个宽字符,它应该是%lc
。