C语言代码,运行后总产生错误。 你的数组越界了,你的数组长度是9,但是你在循环的时候是从0-9,一共10次
C语言问题。这是教材的一段代码,用vs运行会出现错误,为什么?? 是你的scanf_s()函数出了问题2113,请参考某5261个CSDN的文章 CSDN原文经过查找,4102发现是scanf_s的用法错误。《C程序1653设计》中由于是在VC环境下运行,用的是scanf,而我用的是VS2012,输入函数用的是scanf_s。在不涉及字符串时,两者几乎没什么区别,只是用scanf时在预编译处添加一行内容_CRT_SECURE_NO_DEPRECATE就OK了。以至于我没怎么当回事。可涉及字符串后,要记得加上边界限制。添加方法如下图:程序scanf_s部分加上限制10,即改为scanf_s(\"%d%s%f%f%f\",&stu[i].num,stu[i].name,10,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);没有了中断。补充:ANSI C中没有scanf_s(),只有scanf(),scanf()在读取时不检查边界,所以可能会造成内存访问越界,例如分配了5字节的空间但是读入了10字节char buf[5]={'\\0'};scanf(\"%s\",buf);如果输入1234567890,后面的部分会被写到别的空间上去。以上代码如果用scanf_s,第二行应改为scanf_s(\"%s\",buf,5),表示最多读取4个字符,因为buf[4]要放'\\0'scanf_s最后一个参数是缓冲区的大小,表示最多读取n-1个字符.vc+2005/2008中提供了scanf_s(),在最新的VS2015中也提供了scanf_s()。在调用时,必须提供一个。
C语言问题 LZ的代码的确有问题,但是仍然会运行结束,只不过在界面上没有任何输出罢了,因为没有满足输出的任何一个条件。1、首先变量x和y声明类型最好为int整型,因为代码中关系表达式。