c - Pebble SDK - 带字符串的结构数组(可能还有指针)

标签 c string pointers struct pebble-sdk

首先道歉,因为我认为这个问题涵盖了一些相当常见的主题,但我之前没有发现这个特定的组合被问过,我正在绕圈子试图拼凑信息/答案。

无论如何...

我正在尝试为我的 Pebble 编写一个在健身房使用的应用程序。

想法是您可以在 watch 中进行一系列锻炼,选择您的锻炼,然后您将能够循环进行锻炼,查看重复次数/重量,还可以开始休息时间,这将触发计时器。

我很久以前就用过一点点 C(主要是嵌入式东西),但我一生的大部分时间都在 TCL/Python/Javascript 和一些 Java 中度过,我在获取我的语言方面遇到了一些麻烦围绕着 C 的基本本质。

长期目标是拥有一个配套的 Android 应用程序,您可以使用它来设置锻炼,但现在我很乐意将数据硬编码到其中,只要底层数据结构的格式正确.

这是我目前的攻击路线:

#include <pebble.h>

struct Set {
    int reps;
    int weight;
};

struct Exercise {
    char   desc[32];
    int    rest;
    int    num_sets;
    struct Set sets[];    
};


struct Workout {
    char   desc[32];
    int    num_exercises;
    struct Exercise exercises[];
};

struct Workout workouts[3];

strcpy(workouts[0].desc, "Shoulders");
strcpy(workouts[1].desc, "Back");
strcpy(workouts[2].desc, "Chest");

但是编译失败,出现以下错误:

../src/c/workouts.h:27:8: 错误:预期的声明说明符或“锻炼”之前的“...” ../src/c/workouts.h:27:26: 错误:预期的声明说明符或字符串常量之前的“...” ../src/c/workouts.h:28:8: 错误:预期的声明说明符或“锻炼”之前的“...” ../src/c/workouts.h:28:26: 错误:预期的声明说明符或字符串常量之前的“...” ../src/c/workouts.h:29:8: 错误:预期的声明说明符或“锻炼”之前的“...” ../src/c/workouts.h:29:26: 错误:预期的声明说明符或字符串常量前的“...”

第27行是第一个strcpy

我想另一种选择是拥有一个包含大量分隔字段的海量数据 blob,然后以这种方式搅动它:

char workouts[1024]

workouts = "W=Shoulders|Press|8x25kg|6x30kg|4x35kg|40s|..."

这看起来有点难看,但如果我需要将数据来回传递到 Android 应用程序最终可能会更容易?

无论如何 - 感谢您的帮助!

标记

最佳答案

在 C 中,所有执行都必须在函数内发生。尝试用 strcpy() 替换你的行:

int main() {
  strcpy(workouts[0].desc, "Shoulders");
  strcpy(workouts[1].desc, "Back");
  strcpy(workouts[2].desc, "Chest");

  return 0;
}

你可能还想包含 string.h

关于c - Pebble SDK - 带字符串的结构数组(可能还有指针),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40172504/

相关文章:

iphone - 如何停止 Objective C 中的函数递归?

string - Swift 是否支持字符串 block ?

c - 为什么 printf ("%s",charstr) 每次 fread() 的打印量越来越多?

c++ - 改变第一个和最后一个字母的大小写 C++

c - malloc(sizeof(struct Node)) 与 malloc(sizeof(nodeptr)) 的不同行为

c++ - 在同一指令中引用和取消引用

使用可变参数计数调用 C 函数

c - 我怎样才能从键盘上读取一个只有 4 个字母数字字符的字符串,不能少,不能多

c - 如何修复调用 pthread_create 时偶尔出现的 EINVAL 错误

c - 如何修改已传递给 C 函数的指针?