【发布时间】:2014-08-24 11:57:18
【问题描述】:
不知道为什么这段代码显示Segmentation Fault。下面是代码
int main()
{
char *str;
printf("\nEnter a string - \n");
scanf("%s",str);
printf("%s\n",str);
}
分段错误的原因可能是什么?
另外我想知道为什么在 Linux 中使用gets()function 很危险?
【问题讨论】:
-
提示:
str指向哪里? -
gets()很危险,因为它可能导致缓冲区溢出,而不仅仅是在 Linux 上。 -
考虑使用getline(3) 与
char *buf=NULL;和size_t siz=0;然后ssize_t len = getline(&buf,&siz,stdin); -
你为什么不赞成这个问题??
-
可能是因为您的第一个问题(使用
struninitialized)是一个非常基本的问题,每个 C 教程都涵盖了该问题,因此此处偏离主题。第二个问题(关于gets)缺乏研究工作。
标签: c linux segmentation-fault