我有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?
其次我想知道是否有更好的方法来做我想要的事情?感谢
答案 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
答案 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值转换为整数