【发布时间】:2017-02-17 09:29:59
【问题描述】:
我正在尝试测试 -> 运算符,但我似乎无法做到这一点,因为当我执行以下程序并使用流提供输入时,程序停止工作。
注意1:我在编译之前收到警告,它说:
格式“%s”需要“char *”类型的参数,但参数 2 具有类型 'int' [-Wformat=]
注意 2:如果我省略了 printf("%s\n", *(&home1)->name ) 行,它可以正常工作,并且实际上会打印我写的任何内容。
#include <stdio.h>
#include <string.h>
typedef struct home_type {
char name[30] ;
}home;
int main (void) {
home home1 ;
char name[30] ;
scanf ("%[^\n]%*c", name);
strcpy( home1.name, name) ;
printf("%s\n", home1.name ) ;
printf("%s\n", *(&home1)->name ) ;
return 0 ;
}
【问题讨论】:
-
printf("%s\n", &(&home1)->name[0]);........ ;) -
注意:
scanf ("%[^\n]%*c", name);如果他们事先没有任何其他内容就按 Enter 键,则会失败,您将遇到strcpy未初始化的字符串 -
请记住,
->已经内置了*,因此您不需要另一个。
标签: c pointers dereference