使用指针变量时为什么会出现分段错误?

时间:2016-10-15 05:05:25

标签: c pointers

我正在尝试使用scanf()中的C函数阅读该段落。 所以,首先我尝试了下面的代码,

#include <stdio.h>
int main()
{
char Input[100];
printf("Please give the paragraph\n");
scanf("%[^EOF]\n",Input );
printf("\n\n%s\n\n",Input);
return 1;
}

它工作正常,它从stdin获取输入段并打印出来。 然后我用下面给出的指针尝试了同样的事情,

#include <stdio.h>
int main()
{
char *Input;
printf("Please give the paragraph\n");
scanf("%[^EOF]\n",Input );
printf("\n\n%s\n\n",Input);
return 1;
}

此代码也可以获取输入并正确打印输出。 但它抛出了segmentation fault error while the program terminating. 所以,我需要知道为何在终止时发生错误?

如果指针没有指向任何内存意味着,printf()如何打印给定的输入,以及打印的位置?

感谢。

1 个答案:

答案 0 :(得分:0)

由于Input是一个特别指向任何东西并且没有特别值的指针,因此将其值传递给scanf是没有意义的。首先为它赋值 - 使其指向某个东西 - 然后您可以使用它来告诉scanf存储内容的位置。