C typedef struct不打印char str
Posted
技术标签:
【中文标题】C typedef struct不打印char str【英文标题】:C typedef struct not printing char str 【发布时间】:2021-10-07 08:34:35 【问题描述】:所以这个结构是按班级分配的,所以虽然有更简单的方法可以做到这一点,但这是我应该这样做的方式。所以结构需要保持完整。也就是说,我不能让这个打印成为我的行。
在 Geany 中它会说它编译成功,但是当我在控制台中运行它时,字符字符串是 'u????'而不是字符串。我对 C 中的结构相当陌生,所以我不太确定这件事在做什么。我曾尝试使用方括号来确定 char 数组的长度,就像你应该使用 C 一样,但它会告诉我删除它们。任何帮助将不胜感激。
#include <stdio.h>
typedef struct
unsigned char name;
MY_DATA;
void name (MY_DATA *n)
n->name = *"Kyle";
int main (void)
MY_DATA data;
name (&data);
printf ("My name is %s\n", &name);
【问题讨论】:
unsigned char name;
是单个字符,不是以空字符结尾的字节字符串
我怀疑您需要 a good book 并投入一些时间来理解指针、字符串、数组等。您在此处犯的错误与 nothing 具体有关结构本身。仅供参考,将函数name
的地址发送到printf
以获取%s
格式说明符应该会在您的编译中点亮一些巨大的红色警告标志。打开所有警告并将它们视为错误,因为在这一点上,它们肯定就是它们的样子。
printf ("My name is %s\n", &name);
尝试获取函数name (MY_DATA *n)
的地址并将地址作为地址传递给字符串。 Kyle Campbell,为什么要尝试打印函数的地址?
当然typedef struct unsigned char name; MY_DATA;
应该是typedef struct unsigned char *name; MY_DATA;
(添加*
)。
谢谢,但我解决了,typedef var 已更改为 char *name。主调用更改为 data.name = "Kyle"。并且 printf 更改为“%s”,data.name。感谢所有的帮助。
【参考方案1】:
我知道,它已经解决了,但这里是工作代码。 name 也不需要无符号。
#include <stdio.h>
typedef struct
char *name;
MY_DATA;
void name (MY_DATA *n)
n->name = "Kyle";
int main (void)
MY_DATA data;
name (&data);
printf ("My name is %s\n", data.name);
【讨论】:
以上是关于C typedef struct不打印char str的主要内容,如果未能解决你的问题,请参考以下文章
typedef struct bitree char data; struct bitree *lc,*rc; bitree,*btree;