正确编译后程序失败
Program fails after compiling properly
我用 C 语言编写了一个简单的循环,用于打印用户给定 N 的 n^2。输入 N 后它崩溃了。我已经删除了循环,当我现在所做的只是使用 scanf 输入 N 时它仍然崩溃。这是我写的:
#include <stdio.h>
int main()
{
int n;
int N;
printf("Input iterations: ");
scanf("%d", N);
return 0;
}
我正在使用 gcc 编译器,并使用命令提示符 (Windows 10) 进行编译,命令如下:
gcc "C2 Loops.c" -o "C2 Loops.exe"
它编译正常,然后在我输入时运行:
"C2 Loops.exe"
但是我一输入 N 的值,程序就崩溃了:
作为旁注(我通常用 C++ 编程)添加
使用命名空间标准;
在编译时抛出错误。这正常吗?
如能就此问题提供任何帮助,我们将不胜感激。
您应该将变量的地址传递给 scanf()
,而不是变量本身。变化
scanf("%d", N);
到
scanf("%d", &N);
否则,scanf
将尝试将输入值设置为N
指向的地址。 N
的值在这里没有初始化,意味着程序会在这里访问不可预知的内存地址。这就是你的程序失败的原因。
scanf("%d", N);
^ missing &
%d
需要 int
.
的地址
只有这部分代码,程序才接收到参数N并结束。因为你不会对这个参数做任何事情。也许你应该告诉我们你是如何编写打印 n^2 命令的。它可能是这样的
printf("N^2 = %d", N*N);
我用 C 语言编写了一个简单的循环,用于打印用户给定 N 的 n^2。输入 N 后它崩溃了。我已经删除了循环,当我现在所做的只是使用 scanf 输入 N 时它仍然崩溃。这是我写的:
#include <stdio.h>
int main()
{
int n;
int N;
printf("Input iterations: ");
scanf("%d", N);
return 0;
}
我正在使用 gcc 编译器,并使用命令提示符 (Windows 10) 进行编译,命令如下:
gcc "C2 Loops.c" -o "C2 Loops.exe"
它编译正常,然后在我输入时运行:
"C2 Loops.exe"
但是我一输入 N 的值,程序就崩溃了:
作为旁注(我通常用 C++ 编程)添加 使用命名空间标准; 在编译时抛出错误。这正常吗?
如能就此问题提供任何帮助,我们将不胜感激。
您应该将变量的地址传递给 scanf()
,而不是变量本身。变化
scanf("%d", N);
到
scanf("%d", &N);
否则,scanf
将尝试将输入值设置为N
指向的地址。 N
的值在这里没有初始化,意味着程序会在这里访问不可预知的内存地址。这就是你的程序失败的原因。
scanf("%d", N);
^ missing &
%d
需要 int
.
只有这部分代码,程序才接收到参数N并结束。因为你不会对这个参数做任何事情。也许你应该告诉我们你是如何编写打印 n^2 命令的。它可能是这样的
printf("N^2 = %d", N*N);