运行我的代码时出现运行时错误

时间:2016-07-20 08:36:02

标签: c codeblocks

当我编译C代码时,有时会收到此错误消息。

  

Mycode.exe已停止工作..
  一个问题导致程序停止正常工作   如果有可用的解决方案,Windows将关闭该程序并通知您。

我的C代码:

#include<stdio.h> 

main(){ 
    char a; 
    a="S"; 
    printf("%s",a); 
} 

那么这个问题的原因是什么?
语法错误,运行时错误或其他原因?

2 个答案:

答案 0 :(得分:1)

当您使用%s调用printf时,意味着printf将在给定地址开始打印,并在到达空终止符时结束,因为您给printf char而不是从pointerchar,它会尝试使用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;
 } 

它会正常工作。