C 正确编译后程序失败
我已经用C写了一个简单的循环,这意味着从用户那里打印n^2给定的n。它在输入N后崩溃。我已经删除了循环,当我现在所做的只是使用scanf输入N时,它仍然崩溃。下面是我写的:C 正确编译后程序失败,c,command-prompt,C,Command Prompt,我已经用C写了一个简单的循环,这意味着从用户那里打印n^2给定的n。它在输入N后崩溃。我已经删除了循环,当我现在所做的只是使用scanf输入N时,它仍然崩溃。下面是我写的: #include <stdio.h> int main() { int n; int N; printf("Input iterations: "); scanf("%d", N); return 0; } 它编译良好,然后在我输入时运行: "C2 Loops.e
#include <stdio.h>
int main()
{
int n;
int N;
printf("Input iterations: ");
scanf("%d", N);
return 0;
}
它编译良好,然后在我输入时运行:
"C2 Loops.exe"
但一旦我输入N的值,程序就会崩溃:
作为旁注(我通常用C++编程)添加
使用名称空间std;
在编译时抛出错误。这正常吗
非常感谢您对此问题提供的任何帮助。您应该将变量的地址传递给
scanf()
,而不是变量本身。改变
scanf(“%d”,N)代码>
到
scanf(“%d”和&N)代码>
否则,scanf
将尝试将输入值设置为N
指向的地址。此处未初始化N
的值,表示程序将在此处访问不可预测的内存地址。这就是你的程序失败的原因
scanf("%d", N);
^ missing &
%d
期望地址为int
只有这部分代码,程序才能接收参数N和end。因为你对这个参数什么都不做。也许您应该向我们展示如何编写以打印n^2命令。可能是这样的
printf("N^2 = %d", N*N);
不要只提供链接。问题中必须包含所有必要的信息!并阅读scanf
manpage!您应该始终使用-Wall进行编译,并认真对待警告。您还应该阅读相关手册。谷歌“man scanf”,或者,如果在Cygwin上,只需键入“man scanf”。
printf("N^2 = %d", N*N);