70,040
社区成员
发帖
与我相关
我的任务
分享#include<stdio.h>
int main(void){
const char mytal[8]; //已经申明长度为8
scanf("%s",mytal);
printf("%s\n",mytal);
return 0;
}

[/quote]
第二个参数说明 你操作的是一个内存地址 你在地址上写入的数据超过你你原本计划的大小 对于系统还说 她根本不知道
举个简单的例子:你要在本子上写一行字 你说你写入的是8个字 我现在告诉你 你可以从本子的第二行的第一个位置开始写 结果你写了10个字 作为本子 它哪里会知道你写的10字有问题啊!如果你运气不好 ,刚好写第九个或者第十个字的时候那个位置本子上已经有字了 那么你写了后影响别人(因为你给人家覆盖了嘛)。不知道怎么说恰当不?
同样的 输出函数 从某个地址开始输出,直到遇到结束符才停止!因为你连续输入的字符里面没有结束符 所以都给你输出来了,至于什么时候遇到结束符 那要看运气了(所以有可能会多输出一些意外的字符)[/quote]
懂了懂了
#include<stdio.h>
int main(void){
char mytal[8]; //已经申明长度为8
scanf("%7s",mytal);
printf("%s\n",mytal);
return 0;
}
[/quote]
第二个参数说明 你操作的是一个内存地址 你在地址上写入的数据超过你你原本计划的大小 对于系统还说 她根本不知道
举个简单的例子:你要在本子上写一行字 你说你写入的是8个字 我现在告诉你 你可以从本子的第二行的第一个位置开始写 结果你写了10个字 作为本子 它哪里会知道你写的10字有问题啊!如果你运气不好 ,刚好写第九个或者第十个字的时候那个位置本子上已经有字了 那么你写了后影响别人(因为你给人家覆盖了嘛)。不知道怎么说恰当不?
同样的 输出函数 从某个地址开始输出,直到遇到结束符才停止!因为你连续输入的字符里面没有结束符 所以都给你输出来了,至于什么时候遇到结束符 那要看运气了(所以有可能会多输出一些意外的字符)
万分感谢!!
