【发布时间】:2012-11-15 14:48:17
【问题描述】:
我有小于 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?
其次我想知道是否有更好的方法来做我想做的事?谢谢
【问题讨论】:
-
调试器认为如果你有一个字符数组,你会想要将它们解释为字符,因此它为具有八进制符号替代的字符提供了更熟悉的符号。如果继续,您会看到
\n、\r、\v也出现。 AFAIK,没有办法让 GDB 将数组视为微小整数而不是字符的数组,但我不是 GDB 专家,这从来没有让我担心。