搜索
查看: 1172|回复: 2
打印 上一主题 下一主题

为什么我的输入函数明明限定是不大于10个数,而运行的时候却要输入11个数?

[复制链接]
跳转到指定楼层
楼主
发表于 2013-10-18 23:03:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
5啊哈币
#include <stdio.h>
#include <stdlib.h>
void scan(int *array,int n);
void print(int *array,int n);
int main()
{
        int n,arra[10];
    n=10;
        scan(arra,n);
    print(arra,n);
        system("pause");
        return 0;
}
void scan(int *array,int n)
{
        int i;
    for(i=0;i<10;i++)
                scanf("%d\n",array+i);
}
void print(int *array,int n)
{
        int i;
    for(i=0;i<10;i++)
                printf("%d\n",*(array+i));
}
输入的时候必须要输11个数,与限定范围不同,输出倒是满足条件,请问这里错误原因在哪里,另外这段代码无法在啊哈c中运行,我是用visualc++的

最佳答案

查看完整内容

scanf("%d\n",array+i); 问题在于这一句 scanf的格式化字符串中的"\n"的含义是:读到任何非空白字符串再停止读取(或者说一个\n匹配任意数目的任何空白字符) 空白字符一般包括 空格, 制表符\t和换行字符\n 如果你只输入10个数字, \n匹配不到非空白字符,所以会等待你继续输入一个非空白字符 另外这种接口设计是不对的,传进去的n没有用到
沙发
发表于 2013-10-18 23:03:50 | 只看该作者
scanf("%d\n",array+i);

问题在于这一句
scanf的格式化字符串中的"\n"的含义是:读到任何非空白字符串再停止读取(或者说一个\n匹配任意数目的任何空白字符)
空白字符一般包括 空格, 制表符\t和换行字符\n
如果你只输入10个数字, \n匹配不到非空白字符,所以会等待你继续输入一个非空白字符

另外这种接口设计是不对的,传进去的n没有用到
板凳
 楼主| 发表于 2013-10-19 11:55:52 | 只看该作者
rosynirvana 发表于 2013-10-18 23:03
scanf("%d\n",array+i);

问题在于这一句

谢谢你一直热心的回答,请问您现在在哪做什么工作啊,qq多少?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表