在 C 中打印字节字符

Pro*_*ter 1 c string byte

我有一个似乎以字节或八位字节为单位的输入 c 字符串。当我打印它时

printf("this is string[%s]\n", inputCstr);
Run Code Online (Sandbox Code Playgroud)

它不会打印整个内容。所以我试着循环它

for (int i=0; i<len; i++) {
    printf("inputCstr[%d] = %c", i, inputCstr[i]);
}
Run Code Online (Sandbox Code Playgroud)

这会遍历整个字符串,但这实际上跳过了一些索引。例如,如果字符串是“abcdefg”,它会给出类似

inputCstr[0] = a
inputCstr[2] = c
inputCstr[5] = f
Run Code Online (Sandbox Code Playgroud)

我在这里错过了什么?

rod*_*igo 5

那是因为字节数组中存在由控制台专门解释的控制字符。

在您的情况下,您可能遇到过例如\r或类似的情况,将光标移动到第一列,下一行覆盖上一行。

你可以试试:

for (int i=0; i<len; i++) {
    printf("inputCstr[%d] = %02X\n", i, (unsigned char)inputCstr[i]);
}
Run Code Online (Sandbox Code Playgroud)

并查看真正的代码。