编译正确后程序失败

时间:2015-10-08 11:35:14

标签: c command-prompt

我在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的值,程序就会崩溃:

Crash message Crash message 2

作为附注(我通常用C ++编程)添加     using namespace std; 在编译时抛出错误。这是正常的吗?

对此问题的任何帮助将不胜感激,谢谢。

3 个答案:

答案 0 :(得分:4)

scanf("%d", N);
           ^ missing & 

%d预计地址为int

答案 1 :(得分:2)

您应该将变量的地址传递给scanf(),而不是变量本身。变化

scanf("%d", N);

scanf("%d", &N);

否则,scanf会尝试将输入值设置为N指向的地址。 N的值未在此处初始化,表示程序将在此处获得不可预测的内存地址。这就是你的程序失败的原因。

答案 2 :(得分:0)

只有这部分代码,程序才会返回参数N并结束。因为这个参数你不做任何事情。也许你应该告诉我们你怎么写打印n ^ 2命令。它可能像

printf("N^2 = %d", N*N);