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", &amp;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;

C语言结构体中struct和typedef struct有啥区别?

帮忙将typedef STRUCT改成CLASS

typedef struct用法详解与小结

struct和typedef struct区别

为啥我不能像往常一样初始化 typedef struct string 或 char?