-1

for を使用して char* にアルファベット文字を書き込む方法を見つけるのに苦労しています。文字のテーブルを使用してそれを行うだけでよい場合は、次のようになります

for(i=0;i<26;i++) {
    character[i] = 'a' + i;
}

しかし、char * を要求する関数があるので、"something"の代わりに使用する必要があり'something'ます。手伝って頂けますか?

ありがとうございました!

編集

申し訳ありませんが、以前は明確ではありませんでした。かなり疲れているようです。

XPM の構造は次のとおりです。

struct XPM {

    unsigned int width;
    unsigned int height;
    unsigned char cpp;
    unsigned int ncolors;
    Color *colta;
    unsigned int *data[]; 
};

したがって、私が使用しなければならない関数は次のとおりです。

void setXPMColor(XPM *imagine,
    unsigned int index,
    unsigned char r,
    unsigned char g,
    unsigned char b,
    char *charpattern) {

    imagine -> colta [ index ].r = r;
    imagine -> colta [ index ].g = g;
    imagine -> colta [ index ].b = b;
    imagine -> colta [ index ].pchars = charpattern;
}

main() 関数には、次のコード行があります。

    for( i = 0; i < NCOLORS; i++ ) {
        setXPMColor( image, i, 5 * i, 0, 0, SOMETHING);
    }

関数のSOMETHINGの代わりに何を入れることができるので、インデックスごとに異なる文字を使用できますか? (各エントリに新しい文字または任意の種類の記号を入れることを考えていました). 後で、シンボルを使用して画像を生成する必要があります。

したがって、最終的には次のようなものが必要になります。

printf("%s\n", imagine->colta[0].pchars); //a
printf("%s\n", imagine->colta[1].pchars); //b
printf("%s\n", imagine->colta[3].pchars); //c
//etc

編集2:

画像を作成する XPM ファイルを生成する必要があるため、ファイルに文字を描画する必要があります。setXPMColor問題は、関数に文字を与えることです。送信すると char* が必要'a'になるためです。たとえば、型の不一致と表示され、関数には char* が必要ですが、 int を受け取ります。のようなブロック引用符で文字を送信した場合にのみ機能します"a"が、反復ごとに文字をインクリメントすることはできません。それが役立つことを願っています!

ありがとうございました!

4

2 に答える 2

1

char* は、単一の文字または文字の配列へのポインターであり、既存のコードが機能します。関数に渡す char* の長さが少なくとも 26 要素であることを確認してください。そうしないと、配列の外側のメモリを変更します (プログラムがクラッシュする場合としない場合があります)。

このような配列は次のように作成できます。

char * my_character_array = (char*) malloc(26);
于 2014-02-27T23:44:49.407 に答える
0

これがあなたの求めているものかどうかはわかりませんが、Ascii http://web.cs.mun.ca/~michael/c/ascii-table.htmlとの間で変換してみます

数字のように文字を循環させることができます

于 2014-02-27T23:44:36.860 に答える