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はBELor \a(アラート)であり、単に端末を「ding!」にします。

0x08はBSまたはバックスペースまたは\b

0x09はTABまたは\tです。

于 2012-11-15T14:52:26.730 に答える
2

使用している ASCII 文字の 0 ~ 9 は、印刷できない文字です。

printf 関数は、表示できるように \nnn としてフォーマットしています。

ASCII 文字 9 はタブ文字で、一般的 に\t
\b
\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 に答える