在c程序中怎样输入不确定数目的n个数字?

pengpeng5047 2008-05-05 03:10:56
如题:在c程序中怎样输入不确定数目的n个数字?我想知道怎样结束输入操作,谢谢!
...全文
2077 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
mldmillis 2008-05-07
  • 打赏
  • 举报
回复
使用EOF做为结束标记是个不错的选择

EOF在windows下为新的一行ctrl+z,然后回车
EOF在linux下为新的一行ctrl+d,然后回车
pengpeng5047 2008-05-07
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 kingstarer 的回复:]
scanf会返回读取元素的个数



C/C++ code
int n;

int result = 1;
while (result)
{
result = scanf("%d", &n);

if (result == 1)
{
printf("read a num %d\n", n);
}
else
{
printf("end\n");
break;
}
}

//这个程序会一直读取数字,直到按Ctrl + D输入结束符
[/Quote]我想问一下:一般我执行完一个程序后屏幕后都会出现:press any key to continue!而你的这段程序却不会这样,而是可以多次执行,你是怎么做到的呢?
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 Treazy 的回复:]
用什么无所谓,用getchar也可以

关键是你代码是如何实现!
[/Quote]
mazha_huang 2008-05-06
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 Treazy 的回复:]
引用 8 楼 cuibo1123 的回复:
getchar是缓冲函数,回车猜读入。

如果你想输入指定个数字符结束(非回车),就不能用缓冲函数。


用什么无所谓,用getchar也可以

关键是你代码是如何实现!
[/Quote]
没有固定程式,看你怎么实现!
kingstarer 2008-05-06
  • 打赏
  • 举报
回复
scanf会返回读取元素的个数



int n;

int result = 1;
while (result)
{
result = scanf("%d", &n);

if (result == 1)
{
printf("read a num %d\n", n);
}
else
{
printf("end\n");
break;
}
}

//这个程序会一直读取数字,直到按Ctrl + D输入结束符
chlaws 2008-05-06
  • 打赏
  • 举报
回复
方法很多,只要做个结尾的标记就行了
bo.cui 2008-05-06
  • 打赏
  • 举报
回复
getchar怎么实现??

无论你输入什么 在按回车之前 程序都无法判断。

当然 可以写汇编去读缓冲区,然后在中断

呵呵 那样岂不是很傻~~~
Treazy 2008-05-05
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 cuibo1123 的回复:]
getchar是缓冲函数,回车猜读入。

如果你想输入指定个数字符结束(非回车),就不能用缓冲函数。
[/Quote]

用什么无所谓,用getchar也可以

关键是你代码是如何实现!
bo.cui 2008-05-05
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 antantan 的回复:]
可以通过getchar()获得一个字符。然后在做处理,可以设置一个特殊字符,当得到此特殊字符时,结束输入。
例如下面代码
char ch;
while(1)
{
ch = getchar();
if(ch == '特殊字符')
break;
}
[/Quote]

getchar是缓冲函数,回车猜读入。

如果你想输入指定个数字符结束(非回车),就不能用缓冲函数。
p0303230 2008-05-05
  • 打赏
  • 举报
回复
设计那个都可以吧
antantan 2008-05-05
  • 打赏
  • 举报
回复
可以通过getchar()获得一个字符。然后在做处理,可以设置一个特殊字符,当得到此特殊字符时,结束输入。
例如下面代码
char ch;
while(1)
{
ch = getchar();
if(ch == '特殊字符')
break;
}
bo.cui 2008-05-05
  • 打赏
  • 举报
回复
可以用循环,例如:
for(i=0;i<N;i++)
{
scanf("%d",&x);
}
这样按回车 就可以达到输入指定个数(N)之后结束的效果,
但是空格确不起作用,因为输入的数据在缓冲区,按回车才开始读入。

想输入指定个数结束,可以用非缓冲输入函数。
例如:getch()

for(i=0;i<N;i++)
{
x=getch();
}

/*只是举个简单的例子,想输入数值,可以自己转换,也可以用if来屏蔽非数值字符等,自己想吧*/
sheenl 2008-05-05
  • 打赏
  • 举报
回复
可以, getchar进来判断一下就行了
pengpeng5047 2008-05-05
  • 打赏
  • 举报
回复
哦,知道了,谢谢,可以在输入过程中按“回车”来终止吗?那样看起来更好,可以实现吗?
langhua0001 2008-05-05
  • 打赏
  • 举报
回复
定义一个结束数字,如果不需要输入-1则通常设为-1  输入数字判断是否为-1 是则结束  不是则继续输入
guanqb 2008-05-05
  • 打赏
  • 举报
回复
定义一个结束数字 ,比如-1

或读文件

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧