C for循环继续递增
这里是新手。C for循环继续递增,c,arrays,loops,C,Arrays,Loops,这里是新手。 我可能遗漏了一些琐碎的东西,但是: 事情是这样的: 我有一个for循环(从0到你太顽皮了,因为你没有检查scanf的返回值,它会告诉你成功填充的变量数。在你的例子中,你希望它是1,表示有东西被读入你的变量read 如果您试图传递\033(ASCII编码的ESC),则scanf将无法将其解析为int。然后将保留read的先前值(如果尚未将其设置为任何值,则可能会产生未定义的效果),并且read==27几乎肯定是0。这种行为解释了您正在观察的输出 如果scanf确实失败,您可以尝试从流
我可能遗漏了一些琐碎的东西,但是: 事情是这样的:
我有一个for循环(从0到你太顽皮了,因为你没有检查
scanf
的返回值,它会告诉你成功填充的变量数。在你的例子中,你希望它是1,表示有东西被读入你的变量read
如果您试图传递\033
(ASCII编码的ESC),则scanf
将无法将其解析为int
。然后将保留read
的先前值(如果尚未将其设置为任何值,则可能会产生未定义的效果),并且read==27
几乎肯定是0
。这种行为解释了您正在观察的输出
如果
scanf
确实失败,您可以尝试从流中读取char
,并检查其是否等于\033
,因为您没有检查scanf
的返回值,这将告诉您成功填充的变量数。在您的情况下,您希望这样做e1表示某个内容已读入变量read
如果您试图传递\033
(ASCII编码的ESC),则scanf
将无法将其解析为int
。然后将保留read
的先前值(如果尚未将其设置为任何值,则可能会产生未定义的效果),并且read==27
几乎肯定是0
。这种行为解释了您正在观察的输出
如果
scanf
失败,您可以尝试从流中读取char
,并检查这是否等于\033
,您的屏幕截图不是特别有用。如果您的问题是关于代码的(并且大多数问题都适用于此)然后,相关代码应该以文本形式出现在问题中。在这方面,复制和粘贴是你的朋友。不幸的是,你的屏幕截图没有帮助。请在问题中发布代码,而不是图片。粘贴代码可以让我们轻松地自己尝试。问题分别在于j和i的值。编辑:added代码。请不要显示文本的图片。从不。不,真的从不。您的屏幕截图不是特别有用。如果您的问题是关于代码的(并且大多数适合这样做的问题是)然后,相关代码应该以文本形式出现在问题中。在这方面,复制和粘贴是你的朋友。不幸的是,你的屏幕截图没有帮助。请在问题中发布代码,而不是图片。粘贴代码可以让我们轻松地自己尝试。问题分别在于j和i的值。编辑:added代码。请不要显示文本图片。从不。不,真的从不。
#include <stdio.h>
#include <stdlib.h>
int main()
{
//Sort Numbers (zuerst)
int numbers [10];
int i,j;
j = 0;
int read;
printf("Input numbers: \n");
for (i=0;i<10;i++) {
scanf("%d",&read);
if (read == 27) {
break;
} else {
numbers[i] = read;
j++;
}
}
printf("j is: %d, i is: %d\n", j, i);
for (i=0;i<j;i++) {
printf("numbers[%d] is: %d\n", i, numbers[i]);
}
return 0;
}
Input numbers:
1
2
3
^[
j is: 10, i is: 10
numbers[0] is: 1
numbers[1] is: 2
numbers[2] is: 3
numbers[3] is: 3
numbers[4] is: 3
numbers[5] is: 3
numbers[6] is: 3
numbers[7] is: 3
numbers[8] is: 3
numbers[9] is: 3