【发布时间】:2019-01-20 06:42:58
【问题描述】:
导致分段错误:
int n;
int *variable = scanf("%d",&n);
printf("Printing :%d",*variable);
没问题:
int n;
scanf("%d",&n);
int *variable = &n;
printf("Printing :%d",*variable);
如何在没有分段错误的情况下实现第一个?
【问题讨论】:
-
variable是一个 int 指针,但您在其中存储了一个整数。 -
这段代码不应该编译,因为
int *variable = scanf("%d",&n);这一行不是有效的C。你的编译器可能配置错误。 -
scanf返回成功读取的项目数,而不是正在读取的内容的地址(如果您同时读取多个项目,这很有意义)。不过,您可以在阅读之前获取n的地址。 -
改进语法&标签&标题
-
如果
scanf()由于非数字输入、文件结尾或输入错误而没有扫描int,代码应该怎么做?
标签: c pointers segmentation-fault scanf