Code :: Blocks错误.exe已停止工作

时间:2016-11-21 23:58:19

标签: c compiler-errors codeblocks

每当我尝试运行我的代码时,会出现一个弹出窗口,说program.exe已停止工作。

#include<stdio.h>
#include<stdlib.h>

int main()
{
    char D[10];
    for(int i; D[i]!='\0';i++)
        scanf("%c",D);
    for(int i; D[i]!='\0';i++)
        printf("%c",D);

    return 0;
}

这是另外一个导致相同错误的

#include<stdio.h>
#include<stdlib.h>

int main()
{
    int *ptr= (int*)1000;
    printf("%d %d ",ptr,*ptr);
    ptr=ptr+1;
    printf("New Value of ptr : %u",ptr);
    printf("%d %d ",ptr,*ptr);
    return 0;
}

2 个答案:

答案 0 :(得分:0)

Code :: Blocks error .exe已停止工作是一个非常通用的错误代码,包含Code :: Blocks。它可能由于许多不同的原因而发生,因此两种情况都有不同的错误。

在第一个中,D值在for循环中使用之前未设置。当您测试D[i] != '\0'时,行为可能无法预测。

然后,您没有在for循环中初始化i。你的意思是

for(i = 0; D[i] != '\0'; i++)

最后printf不正确,您无法打印char数组。你的意思是

printf("%c", D[i]);

我不确定第二行,但我确定第一行int *ptr= (int*)1000;不正确。 尝试

int a = 1000;
int *ptr = &a;

答案 1 :(得分:0)

在你的第一个程序中,你还没有初始化我。你应该把for i = 0放在for循环中。

此外,您的程序是一个无限循环。因为您每次只在D [0]扫描。你确定你不想使用do ... while循环吗? 你也不需要第二次循环。您可能想要了解如何在c中扫描和打印字符串。

您可能想写:

#include<stdio.h>
#include<stdlib.h>

int main()
{
    char D[10];
    scanf(" %[^\n]s", D);
    printf("%s\n", D);

    return 0;
}

在第二个程序中使用:

int a = 1000;
int *p = &a;

这可确保整数的内存地址保留。