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