我的程序正在运行,但没有成功。返回分段错误。可能出什么问题或如何解决此问题?
#include<stdio.h>
#include<stdlib.h>
int main ()
{
int *arr, i, j, n;
printf ("Input the Size");
scanf ("%d", n);
arr=(int*)malloc(n*sizeof(int));
for (i = 0; i < n, i++;)
{
*(arr + i) = i;
}
for (i = 0; i < n, i++;)
{
printf ("%d\n", *(arr + i));
}
return 0;
}
答案 0 :(得分:1)
更改此:
scanf ("%d", n);
对此:
scanf ("%d", &n);
因为scanf( const char * format, ...)
需要一个指针作为其参数。
此外,请更改以下内容:
for (i = 0; i < n, i++;)
对此:
for (i = 0; i < n; i++)
因为通常的for循环语法是:
for(init; condition;增量)
与第二个for循环相同:for (i = 0; i < n, i++;)
,应为for (i = 0; i < n; i++)
您可以通过传递启用编译的标志(例如,用于GCC的Wall
(这样的编译:{{1}})来允许编译器对此发出警告。然后您将收到以下警告:
gcc prog.c -Wall