我正在使用一个小型 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
中的每个段落)都有不同的字符串指针?
最佳答案
在循环内部为标题动态创建一些空间
workout_menu[w].title = (char *)malloc(sizeof(char) * 10);
然后使用sprintf/snprintf直接复制到SimpleMenuItem的title成员中(不是局部变量)
sprintf(workout_menu[w].title, "Workout %c", workouts[w].letter)
记得在完成后使用 free(),这样就不会发生内存泄漏。
关于c - 如何在 C 循环中使用不同的临时字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21713261/