如何在char中保存int值

时间:2012-11-15 14:48:17

标签: c ascii

我有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?

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

5 个答案:

答案 0 :(得分:6)

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

0x06是ACK

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

0x08是BS或退格或\b

0x09是TAB\t

答案 1 :(得分:2)

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

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

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

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

答案 2 :(得分: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;
}

答案 3 :(得分:0)

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

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

答案 4 :(得分:0)

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