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