我正在努力寻找一种方法来使用for来写字母字母*。 如果我只需要使用表格来表示,那就像这样
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"
这样的块引号发送它时才有效,但是我不能在每次迭代时递增字母。我希望它有所帮助!
谢谢!
答案 0 :(得分:1)
char *是指向您现有代码将起作用的单个字符或字符数组的指针。只要确保你传入函数的char *至少有26个元素长,否则你将修改数组外的内存(这可能会或可能不会使你的程序崩溃)。
您可以像这样创建这样的数组:
char * my_character_array = (char*) malloc(26);
答案 1 :(得分:0)
我不确定这是不是你要问的但是我会尝试转换为Ascii http://web.cs.mun.ca/~michael/c/ascii-table.html
这将允许您像字母一样循环显示字母