C语言 输入不确定的个数的数字后停止循环

题目如下:

我的代码:
#include<stdio.h>
int B[500],a;
void print_array(){
int i;
printf("[");
for(i=0;B[i]!='\0';i++){
if(i<a-1){
printf("%d,",B[i]);
}else{
printf("%d",B[i]);
}}
printf("]");
}

void fill_array(){
int i,n;
char j=getchar();
for(i=0;i<500;i++){
if(j=='e'){
break;
}else{
printf("Enter an integer: \n");
scanf("%d",&n);
B[i]=n;
}
}
a=i;
}
int main(){
printf("press e to get an end.");
fill_array();
print_array();
return 0;
}

程序跑不对,之前输入数字是对的,但是输入e之后程序就终止了,break的意图是终止for循环而不是终止程序。
或者哪位大神知道怎样实现用for循环输入不确定的个数的数字后停止循环?

用 while(scanf("%d", &n) != EOF) 实现啊,在Windows下按Ctrl+z就可以停止获取字符了
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-03-17
#include<stdio.h>
#include"conio.h"
#include"string.h"
#include"stdlib.h"

int B[500],a;

void print_array(){

int i;

printf("[");

for(i=0;B[i]!='\0';i++){

if(i<a-1){

printf("%d,",B[i]);

}else{

printf("%d",B[i]);

}}

printf("]\n");
}

void fill_array(){

int i;
char str[10];

a=0;
for(i=0;i<500;i++){

printf("Enter an integer, press e to get an end. ");

gets(str);

if(strcmp(str,"e")==0 ) break;

else B[a++]=atoi(str);
}

}

int main(){

fill_array();

print_array();

return 0;

}
相似回答