这里有一些测试代码可以帮助我理解多字节字符管理。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[]) {
char * line = malloc(1024);
size_t n;
getline(&line, &n, stdin);
while (*line) {
int offset = mblen(line, strlen(line));
if (offset == -1) return 0;
printf("%d\n", offset);
line += offset;
}
return 0;
}
据我了解,如果用户输入“éléphant”,我的输出应该显示 2 1 2 1 ...
然而,它从第一个字节开始就显示 -1 表示
mblen
错误。
我认为这可能不是这两行代码中的错误,我必须做什么,我可以阅读哪些资源来获得有关这里发生的情况的提示?printf("%s", line)
可以(并且确实)完美地工作。