当我编译C代码时,有时会收到此错误消息。
Mycode.exe已停止工作..
一个问题导致程序停止正常工作 如果有可用的解决方案,Windows将关闭该程序并通知您。
我的C代码:
#include<stdio.h>
main(){
char a;
a="S";
printf("%s",a);
}
那么这个问题的原因是什么?
语法错误,运行时错误或其他原因?
答案 0 :(得分:1)
当您使用%s
调用printf时,意味着printf
将在给定地址开始打印,并在到达空终止符时结束,因为您给printf char
而不是从pointer
到char
,它会尝试使用a
中写入的值开始打印。
a
是占用一个字节空间的字符,而64位系统中的地址是8字节,所以基本上printf取值为&#39; a&#39;以及接下来的7个字节(随机&#39; 垃圾&#39;)并尝试将其用作停止打印的地址。
这就是为什么它有时像你说的那样工作,有时这些随机地址可以从开始打印,但有时它们是你无权访问的地址,如操作系统或内核使用的内存区域。
要解决您需要a
一个char *
和不一个char
的问题,并为其指定一个字符串。
答案 1 :(得分:-1)
将您的代码更改为
#include<stdio.h>
int main()
{
char a;
a='S';
printf("%c",a);
return 0;
}
它会正常工作。