2016-11-21 421 views
1

每当我尝试运行我的代码时,弹出窗口即将告知program.exe已停止工作。Code :: Blocks错误.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

你可以发布代码吗?如果我们无法看到代码,那么我们有点难以确定问题所在。编辑问题以包含它。 – GrandMasterFlush

+0

https://drive.google.com/file/d/0B-QBwnCjr6U9ZzR4ODc2NzdlYW8/view?usp=sharing –

+0

@GrandMasterFlush下面是另一个代码中同样错误的屏幕截图。 https://drive.google.com/file/d/0B-QBwnCjr6U9Z3BwLWpaU1JGZEk/view?usp=sharing –

回答

0

代码:: Blocks的错误的.exe已停止工作与代码:: 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; 
0

在你的第一个程序中,你还没有初始化我。你应该把int 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; 

这确保了整都有它的内存地址保留。