每当我尝试运行我的代码时,会出现一个弹出窗口,说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;
}
答案 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;
这可确保整数的内存地址保留。