【发布时间】:2014-09-15 21:34:28
【问题描述】:
我正在尝试构建一个数组,其中包含一系列我想在运行中构建的字符,这些字符是这样的\x01、\x02 等等。
例如,假设我们有:
#define NUMCOLORS 3
char delim[NUMCOLORS];
我们希望在delim 中有值\x01, \x02, \x03。
我想到了两种可能的方法,但都导致了段错误:
for (int i = 0; i < NUMCOLORS; i++){
char *h = "\x01";
sprintf(h, "\x0%d", i+1);
strcpy(delim[i], h);
}
// Other way
for (int i = 0; i < NUMCOLORS; i++){
char *h = "\x0";
strcpy(delim[i], h+1);
}
有什么方法可以创建我需要的char
【问题讨论】:
-
您不能将
sprintf转换为h,因为它指向只读内存部分。您不能将strcpy转换为delim[i],因为它是char,而不是char指针!!! -
你知道strdup(3)吗?