注册 登录
编程论坛 数据结构与算法

请问在 dos 操作下怎么键盘输入知道输入数据结束并执行下一步操作呢?

longxingxiu 发布于 2014-05-16 22:28, 763 次点击
看百度说是ctrl z,为什么我的不行呢!
上代码
程序代码:
#include "stdio.h"
#include <stdlib.h>
#define N 100
void conversion(int *q,int C);
void main()
{
    printf("请输入要转换的二进制数:");
    int *p;int count=1;int i;
    p=(int*)malloc(sizeof(int) * N);
    while(getchar() != '\n')
    {scanf("%d",p++);count++;}
    for(i=0;i<count;i++)
    {printf("输入的二进制数为:\n%d",*(p+i));}
    conversion(p,count);

}
void conversion(int *q,int C)
{
    int result=0;int i;
    for(i=0;i<C;i++)
    {
        result+=(*q*2);
    }
    printf("转换后的结果为:%d",result);

}
9 回复
#2
azzbcc2014-05-17 01:41
while(getchar() != '\n')
{scanf("%d",p++);count++;}


你想过他会怎么执行么?
#3
longxingxiu2014-05-17 18:36
回复 2 楼 azzbcc
那这块怎么结束怎么写呢?这样写还是不对啊
程序代码:
  p=(int*)malloc(sizeof(int) * N);
    while((getchar())!='\n')
    {
        *p=getchar();p++;count++;
    }
#4
longxingxiu2014-05-17 18:37
回复 2 楼 azzbcc
就是想输入一个任意的二进制数,以enter结束,并存到开辟的内存个中。
#5
azzbcc2014-05-17 19:10
for (char *p_tmp = p;'\n' != *p_tmp;p_tmp++)
{
  *p_tmp = getchar();
}
#6
azzbcc2014-05-17 19:11
用gets可以直接读一行,不过不建议用。
#7
icanbestrong2014-05-17 20:57
回车是\t吧,我觉得你可以以一个特殊字符但不是特别特殊的那种作为结束标志,比如#号。我也遇到过这个问题,百度了一下,说EOF是根据操作系统不同那个按键也会不一样,不过windows下确实是ctrl+z,但是不管用,我的解决方法就是上面提到的,希望可以帮到你
#8
icanbestrong2014-05-17 20:57
回车是\t吧,我觉得你可以以一个特殊字符但不是特别特殊的那种作为结束标志,比如#号。我也遇到过这个问题,百度了一下,说EOF是根据操作系统不同那个按键也会不一样,不过windows下确实是ctrl+z,但是不管用,我的解决方法就是上面提到的,希望可以帮到你
#9
longxingxiu2014-05-18 00:37
回复 7 楼 icanbestrong
我后来改的 那部分有错误吗?
还是说就是最后在电脑上不行。
嗯嗯,加特殊符号的挺好的也,谢谢啦!不一定要用换行键表示结束,嗯嗯。,thanks
#10
longxingxiu2014-05-18 11:59
回复 5 楼 azzbcc
不懂唉!
1