【发布时间】:2018-11-13 03:00:59
【问题描述】:
我已经尝试了一些不同的方法来让它工作,但基本上我有一个 6 个字母长(最大)的名称,我需要将它输入到 char* 车中来代替“-”。例如,如果名字是 Bob,那么汽车应该看起来像 ~O=Bob----o>
typedef struct Racer_S {
int row; ///< vertical row or "racing lane" of a racer
int distance; ///< column of rear of car, marking its position in race
char *graphic; ///< graphic is the drawable text of the racer figure
} Racer;
Racer * make_racer( char *name, int row ){
Racer *newRacer;
char *car = "~O=-------o>";
for (int i = 0; i < strlen(name); ++i)
car[i+3] = name[i];
// printf("%s\n",car);
// newRacer->row = row;
// newRacer->distance = 0;
// newRacer->graphic = car;
return newRacer;
}
【问题讨论】:
-
Racer到底是什么?它是你可以控制的吗? -
在许多平台上,您将无法修改该缓冲区。即使你能够做到,你 A) 丢弃它,并且 B) 它在堆栈上。
-
Racer 是指向 char * 的指针吗?请提供定义
-
旁注:依靠编译器只计算一次
strlen不是一个好主意。我强烈建议在循环外部只计算一次strlen(name),将其存储到一个变量中,然后将其用于循环条件测试,而不是通过重复@ 使你的循环潜在地O(n**2)987654327@ 测试strlen次。