【问题标题】:Compile Error, Member is not a member of a union | working with pointers/structs编译错误,成员不是工会成员 |使用指针/结构
【发布时间】:2015-01-21 12:30:30
【问题描述】:

我重写了一个项目所需的函数,用于构建包含媒体本身信息的媒体数据库。 在下面的一段代码中,我试图从用户那里获取一个格式为 HH:MM:SS 的字符串作为标题的长度。 然后我必须使用指向第一个 isdigit char 的指针拆分字符串几个小时,第一个 isdigit char 在第一个“:”之后几分钟,第一个 isdigit char 在最后一个“:”之后检查字符串是否符合我想要的用户进入。 为了检查子字符串是否合法,我使用 atoi 转换为 int 并尝试写回结构,但指针让我敬酒。 任何帮助表示赞赏。

这里是代码本身(粘贴以提高可读性)datetime.c with functions to examine string and put pointers on first digit of the input, first digit after first: and first digit after last:

我评论了发生编译错误的位置(pastebin 上的 l.103 105 107)

为了更好地了解这里是我使用的结构:

datastructure.h everything but char * zeit is required as written

提前谢谢我最近真的很愚蠢,试图通过反复试验来强制它编译,我认为我根本没有接近目的地......

编辑:当我尝试编译时:

||=== Build: Debug in Iue2 (compiler: GNU GCC Compiler) ===|
C:\Users[...]\datetime.c||In function 'convertStringToTime':|
C:\Users[...]\datetime.c|104|error: request for member 'hour' in something not a structure or union|
C:\Users[...]\datetime.c|106|error: request for member 'minute' in something not a structure or union|
C:\Users[...]1\datetime.c|108|error: request for member 'second' in something not a structure or union|
||=== Build failed: 3 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|

【问题讨论】:

  • 使用strtol,您可以同时进行验证和转换。
  • 至于您的问题,您遇到什么错误?请编辑您的问题以包含完整且未经编辑的错误日志。
  • 已更新。抱歉,我认为将其添加到行中并引用它是可以的。
  • 好的,我现在只是通过以 pastebin 样式阅读它就发现了我的错误。而不是 *lp 我将 *zeit 传递给 convertStringToTime。伙计,我不敢相信我在过去 3 天里总是读它。

标签: c string pointers struct


【解决方案1】:

第 74 行已损坏:它必须是 void convertStringToTime(char * strTime, TTime * lp) 而不是 void convertStringToTime(char * strTime , TTime * Zeit)。其他一切似乎都很好。 现在将尝试完成内存分配并将 strtol() 视为替代解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-16
    • 1970-01-01
    • 1970-01-01
    • 2011-12-13
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多