C语言中fscanf函数的问题

文本中有以下内容:name = Lily, age = 17,部分代码如图1,运行结果如图2。我不理解的是,为什么只能存一个字节的pname数组,能够存下五个字节的数据,这难道不会造成一些隐患吗?望各位大神解答!

第1个回答  2019-03-18
当然会造成隐患 这只能说明 运气好 后面的内存 访问不会出错
有时候程序遇到 这种情况会直接结束 一点错都不报给你 找BUG找到你头大。
第2个回答  2019-03-18
fscanf(fp,"...%s..",pname,..) 中输入格式 %s 是读入一个字符串,存放到 pname 的“首地址”为起始的 内存区。这种存放方式,并不考虑pname的存储区声明了几个字节,只要有“首地址”,就去存放。
由于程序较简单,需要的系统资源很少,char pname[1]; 只声明了1个字节的存储区,但只要后面的存储区空着,未被系统用掉,本程序就可以用,也不会出错。但对于大的程序,超出1个字节的存储区里的数据是不可靠的。所以编程时,要避免这种错误的产生。本回答被提问者采纳
相似回答