gpt4 book ai didi

c - 当输入通过时如何结束输入

转载 作者:行者123 更新时间:2023-11-30 17:24:54 27 4
gpt4 key购买 nike

#include <stdio.h>
#include <string.h>
int main()
{
int array[1000]={0}, n, c, d, swap;
printf("Enter number of elements\n");
scanf("%d", &n);

printf("Enter %d integers\n", n);

for (c = 0; c<n; c++)
scanf("%d", &array[c]);


for (c = 0 ; c < ( n - 1 ); c++)
{
for (d = 0 ; d < n - c - 1; d++)
{
if (array[d] > array[d+1]) /* For decreasing order use < */
{
swap = array[d];
array[d] = array[d+1];
array[d+1] = swap;
}
}
}

printf("Sorted list in ascending order:\n");

for ( c = 0 ; c < n ; c++ )
printf("%d\n", array[c]);

int result= array[n-1]-array[0];
printf("The difference between the largest and smallest: %d",result);
puts("");
return 0;
}

该程序首先对输入进行冒泡排序,然后给出最大和最小数之差的输出。我想在输入 enter 时结束输入。例如,输入 = 6 4 2 ,输出= 4。 (按“回车”结束输入)

最佳答案

要在发生 Enter'\n' 时结束输入,使用 scanf("%d",... as "%d" 首先消耗包括 '\n' 在内的所有空白。首先需要使用不同的方式来监视 '\n'

for (c = 0; c<n; c++)
int ch;
while ((ch = fgetc(stdin)) != '\n' && isspace(ch));
if (ch == '\n' || ch == EOF) break;
ungetc(ch, stdin);
if (scanf("%d", &array[c]) != 1) Handle_NonNumericInput();
}

或者更好的是,使用fgets()。轻松捕获各种无效输入。

#include <limits.h>
#define MAX_INT_SIZE (sizeof(int)*CHAR_BIT/3 + 3)

c = 0;
char buf[n*(MAX_INT_SIZE + 1) + 2];
if (fgets(buf, sizeof buf, stdin)) {
char *p = buf;
for (; c<n; c++)
int n;
if (sscanf(p, "%d %n", &array[c], &n) != 1) break;
p += n;
}
if (*p) Handle_Missing_or_Extra_or_Nonnumeric_input();
}

关于c - 当输入通过时如何结束输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27163935/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com