0

我有低于 255 的整数,并希望将它们保存到 char 数组中。我正在尝试一些测试:

#include <string.h>
#include <stdio.h>
#include <stdlib.h>

int
main(void)
{
    char string[10];
    int integers[10]; //all under 255.

    int j;
    for(j=0; j<10; j++)
    {
            integers[j]=j;
    }

    int i;
    for(i=0; i<10; i++)
    {
            string[i]=(char)integers[i];
    }

    printf("%s \n", string);
    return 0;
}

当我将调试器运行到程序末尾时,字符串包含以下 ascii 值:

"\000\001\002\003\004\005\006\a\b\t"

首先我不明白为什么在 006 之后出现一个 \a,最后出现一个 \t?

其次,我想知道是否有更好的方法来做我想做的事情?谢谢

4

5 回答 5

6

您看到的是ASCII字符 0x06、0x07、0x08 和 0x09 的转义表示。

0x06 是ACK.

0x07 是BEL\a(警报),只是导致终端“叮”!

0x08 是BS或 退格 或\b.

0x09 是TAB\t

于 2012-11-15T14:52:26.730 回答
2

您使用 0-9 的 ASCII 字符是不可打印的字符。

printf 函数将它们格式化为 \nnn 以便可以看到它们。

ASCII 字符 9 是制表符,通常表示为\t
ASCII 字符 8 是退格字符,表示为\b
ASCII 字符 7 是响铃“或警报”字符,常见表示为\a

http://web.cs.mun.ca/~michael/c/ascii-table.html

于 2012-11-15T14:54:07.980 回答
1
#include <stdio.h>

int main (void)
{
    char string[10];
    int i;

    for(i=0; i<10; i++)
    {
      string[i] = i;
    }
    string[9] = '\0';

    printf("%s \n", string);

    return 0;
}
于 2012-11-15T15:07:47.087 回答
0

您不需要创建第一个整数数组。可以直接填充字符串数组。

char string[11];
int i;
for(i=0; i<10; i++)
{
    string[i] = i;
}
string[i] = '\0';
于 2012-11-15T14:57:06.960 回答
0

使用atoi函数将 ascii 值转换为整数

于 2012-11-15T14:58:55.957 回答