1

我在一个小的 C API 下开发,我需要创建一个结构数组,每个都有不同的标题。根据我的 PHP 背景,我编写了以下代码摘录:

char *title = "";
for(int w = 0; w < total_workouts; w++) {
    snprintf(title, 10, "Workout %c", workouts[w].letter);
    workout_menu[w] = (SimpleMenuItem) { .title = title };
}

但是,该title变量是作为指向SimpleMenuItem对象的指针发送的,因此所有菜单项都具有相同的标题。我花了一些时间摆弄字符串数组等,但无法使其工作。

我将如何修复代码片段以使每个菜单条目(每个段落中的每个段落for)都有不同的字符串指针?

4

1 回答 1

3

Create some space for title dynamically INSIDE The loop

workout_menu[w].title = (char *)malloc(sizeof(char) * 10);

And then use sprintf/snprintf to copy directly into the title member of SimpleMenuItem (not a local variable)

sprintf(workout_menu[w].title, "Workout %c", workouts[w].letter)

Remember to use free() when you're finished so you don't have a memory leak.

于 2014-02-11T21:25:51.437 回答