在c中用箭头符号打印结构元素

bab*_*pox 0 c struct pointers

我有一个带指针的结构..我只是在徘徊如何用指针打印结构的值,所以我写了一个代码像

#include <stdio.h>
#include <string.h>

typedef struct Books
{
   char  title[0];
} Book,*andi;


int main( )
{
   Book book;
   Book *andi;
   strcpy(book.title, "avi");
   printf( "Book title : %s\n", andi->title);
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我尝试这个代码它没有给我一个错误,但产生一个空结果而不是"avi"..你能告诉我为什么会发生这种情况??

任何帮助都会很棒..谢谢

Vla*_*cow 5

你必须初始化指针andi.例如,尝试以下操作

int main( )
{
   Book book;
   Book *andi = &book;
   strcpy(book.title, "avi");
   printf( "Book title : %s\n", andi->title);
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

并且阵列的大小不应为零.至少改变结构定义

typedef struct Books
{
   char  title[10];
} Book,*andi;
Run Code Online (Sandbox Code Playgroud)

以与typedef名称相同的方式命名变量也不是一个好主意.虽然此代码有效

andi andi = &book;
Run Code Online (Sandbox Code Playgroud)

尽管如此,最好将相应的typedef命名为例如以下方式

typedef struct Books
{
   char  title[10];
} Book,*PBook;
Run Code Online (Sandbox Code Playgroud)

在这种情况下你可以写

PBook andi = &book;
Run Code Online (Sandbox Code Playgroud)