我正试图使用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()
如何打印给定的输入,以及从何处打印?谢谢。
最佳答案
由于Input
是一个指向无特定内容的指针,并且没有特定的值,因此将其值传递给scanf
是没有意义的。先给它赋值——让它指向某个东西——然后用它告诉scanf
在哪里存储东西。
关于c - 为什么在使用指针变量时出现段错误?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40055161/