c - 如何在 C 循环中使用不同的临时字符串?

标签 c c-strings pebble-watch

我正在使用一个小型 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/

相关文章:

c - 如果你 malloc 一个 struct* 它会创建局部变量吗?

有人可以解释在 Pebble C Watchface 教程中找到的部分代码吗?

c - 反转字符串时交换指针值时出现段错误

c - 缩短路径字符串功能

c - 修改字符串(字符数组)

C - 理解结构成员与指针 (char *)

docker - 使用DOCKER设置Pebble SDK

javascript - AppMessage 总是失败并显示 APP_MSG_SEND_TIMEOUT

c - 从 C 中的双指针数组中删除单行?

c - sqlite3_exec不返回任何输出