如何满足条件时如何打破一维数组?

时间:2016-10-06 20:58:20

标签: c arrays

我正在尝试输入一个数字数组(目前只有整数),而我要做的就是如果用户输入所有需要的数字,让他能够打破输入数字的操作跳过打印输入的数字。我的代码如下。所以问题是,我已经设置了100个数组元素,但如果只有5个进入,我就不会进入另外95个。 评论代码是我尝试过的,但它没有用。 (我在CodeBlocks工作并且是初学者,所以我还在学习这个......)

#include <stdio.h>
#include <stdlib.h>

int main()
{
//Declaring variables

int one_d_array[100],counter=0;

printf("Enter a list of numbers(max. 100)\nTo end, enter two zeros (00)\n");
for (counter=0;counter<5;counter++){
    scanf("%d",&one_d_array[counter]);

    /*if (one_d_array[counter]==00){
        break;
    }*/

}
printf("Entered list is:\n");
for (counter=0;counter<5;counter++){
    printf("%d\n",one_d_array[counter]);
}
}



return 0;
}

2 个答案:

答案 0 :(得分:1)

fgets可用于输入一行。如果该行00退出循环。否则sscanf会尝试扫描一个数字。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main( void)
{
    int one_d_array[100],each=0,counter=0;
    char input[99] = "";

    printf("Enter a list of numbers(max. 100)\nTo end, enter two zeros (00)\n");
    while ( 1){
        if ( fgets ( input, sizeof ( input), stdin)) {//get a line
            if ( strcmp ( input, "00\n") == 0) {//exit on 00
                break;
            }
            if ( ( sscanf(input, "%d",&one_d_array[counter])) != 1) {// != 1 means sscanf failed
                printf("could not scan a number try again\n");
                continue;
            }
            counter++;
            printf("numbers input: %d\n\n", counter);
            if ( counter >= 100) {
                break;
            }
        }
        else {
            fprintf ( stderr, "problem reading input\n");
            exit ( 1);
        }
    }
    printf("Entered list is:\n");
    for (each=0;each<counter;each++){
        printf("%d\n",one_d_array[each]);
    }
    return 0;
}

答案 1 :(得分:0)

变量名不能以数字开头,所以我已经相应地编辑了它。

#include <stdio.h>
#include <stdlib.h>

int main(){
//Declaring variables

int oneD_array[100],counter=0, num=0;
char c[3];

do{
    printf("Enter your %d number, q to quit", counter+1);
    scanf("%s",&c);
    if(c == "q" || c == "Q"){
        break;
    }
    else{
        num = atoi(c);
        oneD_array[num];
        counter++;
    }


}while(c != "q");
printf("Entered list is:\n");
for (int i = 0;i<counter;i++){
    printf("%d\n",oneD_array[i]);
}
}



return 0;
}