我正在尝试输入一个数字数组(目前只有整数),而我要做的就是如果用户输入所有需要的数字,让他能够打破输入数字的操作跳过打印输入的数字。我的代码如下。所以问题是,我已经设置了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;
}
答案 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;
}