中易网

c语言数组输入问题,急急急急!!!sos

答案:3  悬赏:30  
解决时间 2021-04-27 09:41
  • 提问者网友:西路不相离
  • 2021-04-27 04:19

希望高手能忍赖,写得有点多,不好意思啊,是这样的,遇到一个疑惑。就是关于字符数组的输入输出问题。

char a[10];
 scanf("%s",a);
 printf("%s",a);

我定义了一个字符数组char a[10],我用scanf对它进行输入,输入10个字符,书上讲的系统会自动在字符长量后加'\0'.但是字符数组的空间已经被10字符占了,而这个'\0'放在什么地??是不是会被放在a[9]的下个内存中(即越界了)???

我在用printf输出,能够正常输出,为什么??(printf不是要检测到'\0'才停止吗,既然数组中没有'\0',系统为什么不抱错??而且能够正常输出?)

还有一个问题就是(接上),当我输入11,12,13个字符时,程序也能正常运行,即同样输出11,12,13个字符。。但是当我输入几十个字符时,程序同样能运行,输出同样多字符,但是屏幕上会弹出一小筐,提示程序已经停止工作??????

这到到底是为什么呀??

就是字符串和结束符搞的不清楚。。

 

各位高手哥哥姐姐帮帮忙呀,帮小第一把。。

 

 

 

 

 

 

 

 

 

 

最佳答案
  • 二级知识专家网友:厭世為王
  • 2021-04-27 04:39

数组的结尾就相当于一个'\0',还有当你的数组长度大于字符数,那么就需要添加'\0'了

全部回答
  • 1楼网友:怪咖小青年
  • 2021-04-27 07:20

scanf是输入的东西 碰到空格 或者回车 就停止输入了

  • 2楼网友:野性且迷人
  • 2021-04-27 06:14

我有一个猜想:

pintf(“%s”, a;)这句是先读取一个字符串。a其实是一个指针,这里是将这个字符串储存在以a开头的内存中。跟下标没有什么关系。

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息