scanf奇特的用法

来源:百度知道 编辑:UC知道 时间:2024/06/23 04:10:21
#define MAXSIZE 100
#include<stdio.h>
#include<stdlib.h>

typedef struct stack{

int data[MAXSIZE];

int top;

}sta;

void init(sta *s){

s->top=-1;

}

int empty(sta *s){

if(s->top==-1)

return 1;

else

return 0;

}

void push(sta *s,int i){

if(s->top==MAXSIZE-1){

printf("Stack is full\n");

return;

}

s->top++;

s->data[s->top]=i;

}

int pop(sta *s){

if(empty(s)){

printf("stack is empty");

return -1;

}

return(s->data[s->top--]);

}

void trans(int num)
{
sta s;

int k,m;m=num;

init(&s);

while(num){

k=num%16;

push(&s,k);

num=num/16;

}<

while 循环语句反复循环,
读入新数据,读到一个就循环一次,等待再读,如果输入流暂存器里有数值,它就去来用。

连续输入几个数,按一次回车,这几个个数全在 暂存器 里。

如果不想让程序取用 暂存器 里后几个数值,要用 fflush 清除:
scanf("%d",&num);

while(num!=-1){
trans(num);
fflush(stdin); // 清除
scanf("%d",&num);printf("tushaopin");
}

while(num!=-1){

trans(num);

scanf("%d",&num);printf("tushaopin");

}

这个循环里不是有输入吗?
也就是只要你输入正确,可以循环输入