【发布时间】:2018-02-11 11:56:15
【问题描述】:
我是编程新手,在尝试运行我的程序时遇到了这个错误。我在我的 Mac 上使用终端来编译它,这似乎工作正常,但是当我尝试运行该程序时,它只显示“分段错误:11”。我不知道我做错了什么或如何解决它。任何帮助将非常感激。这是我的程序的源代码:
#include <stdio.h>
int main(void)
{
int l;
char name[l];
printf("Hello. What's your name?\n");
//scanf("%s", &name); - deprecated
fgets(name,l,stdin);
printf("Hi there, %s", name);
return 0;
}
【问题讨论】:
-
l的值是多少?告诉我。 -
我正在尝试从用户那里获取输入。 l 是我声明的变量,表示用户输入的字符串的长度
-
但是在
char name[l]中使用l之前,您是否接受过输入? -
没有。你会建议我如何解决这个问题?就像我说的,我是新手哈哈
-
scanf("%d",&l); if(l<=0) {/* error */} char name[l];但请确保您有 VLA 支持..>=C99您之前所做的是 UB(未定义行为)的示例作为练习检查scanf/@987654328 的返回值@.
标签: c segmentation-fault fgets