【问题标题】:C typedef struct not printing char strC typedef struct不打印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。感谢所有的帮助。

标签: c struct typedef


【解决方案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);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-04
    • 1970-01-01
    相关资源
    最近更新 更多