Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 忽略循环以增加数组的大小_C_Loops_For Loop - Fatal编程技术网

C 忽略循环以增加数组的大小

C 忽略循环以增加数组的大小,c,loops,for-loop,C,Loops,For Loop,在下面的main方法中,我试图调用一个sort函数,在该函数从用户输入中选择后者之后,它必须相应地打印排序,并在末尾使用for循环。但是我有一个警告,指向数组[arraySize]“循环最多运行一次(循环增量从未执行)”。它与上面的返回类型或其他for循环有关吗?这里发生了什么事?有人能指出并解释一下吗。多谢!下面是代码: int main() { long array[100], arraySize; char sort; long maxi = 100; f

在下面的main方法中,我试图调用一个sort函数,在该函数从用户输入中选择后者之后,它必须相应地打印排序,并在末尾使用for循环。但是我有一个警告,指向
数组[arraySize]
“循环最多运行一次(循环增量从未执行)”。它与上面的返回类型或其他for循环有关吗?这里发生了什么事?有人能指出并解释一下吗。多谢!下面是代码:

int main()
{
    long array[100], arraySize;
    char sort;
    long maxi = 100;

    for(arraySize = 0; arraySize < maxi; arraySize++)
    {
        printf("Enter any positive integer, enter 0 to stop: ");
        scanf("%li", &num);

        if(num < 0) {
            arraySize--;
            printf("I said positive!");
            count++;
        }
        else if(num == 0) {
            maxi = arraySize;
        }
        else {
            array[arraySize]=num;
            arraySize--;
        }
    }

    printf("Please enter A for ascending or D for descending order\n");
    scanf("%s", &sort);

    bubble_sort(array, arraySize, sort); //calling the sort function

    printf(" Sorted list in the selected order:\n");
    for (arraySize = 0; arraySize < num; arraySize++) {
        printf("%ld \n", array[arraySize]);
    puts("");
    return 0;
    }
}

任何更多的建议将不胜感激

还有一些其他问题,但让我们谈谈您的警告。您有以下代码:

for (arraySize = 0; arraySize < num; arraySize++) {
    printf("%ld \n", array[arraySize]);
    puts("");
    return 0;
}
for(arraySize=0;arraySize

更正后的缩进应该可以清楚地说明为什么循环最多运行一次。

您的打印循环似乎有打字错误,应该更正为:

    for (arraySize = 0; arraySize < maxi; arraySize++) {
for(arraySize=0;arraySize

对bubble\u sort()的调用也应该使用maxi而不是arraySize。

最后输入的字符存储在
sort
中,并且该字符很可能是
\n

scanf(“%c”,&sort);
更改为
scanf(“%c”,&sort);
应该可以解决这个问题。
请注意
%c

为什么每次都在for循环中执行
排列--
操作?确切地说
排列+++
什么时候才会显示它的真实颜色?在整个循环中,除了
num==0
之外,它不会始终保持相同的状态,因为只有这样代码才没有使用
排列--
else
部分应该只包含
array[arraySize]=num;
而不包含其他内容,让
arraySize
在此之后递增1,以便可以在下一个索引处添加新值。
char sort;…scanf(“%s”,&sort)
不好。@nIcEcOw
arraySize
就是这样,每次我都不必在我的
bubbleSort
函数的循环中
arraySize-I
!@pointing\u堆栈同意
scanf(%s),…
将接受用户输入,但它将结果存储为字符串。如果用户键入
a
,则
'a'
将存储在
排序中,
'\0'
将存储在下一个地址中-谁知道这将做什么?建议
扫描(%c),而不是&sort
。@pointing_Stack顺便说一句:最佳做法:检查
scanf()的结果
函数族,即使它看起来不必要。我更改了它,但它仍然没有解决问题。您是否确保将“返回0”行移到循环之外?是的,我也这样做了!我在类似的程序中使用了此循环,它工作得很好。我仍然不确定它为什么会显示此警告。很抱歉,我还是个初学者。@pointing\u Stack:你明白你的
return 0;
语句的意思吗?是的,我把它从这个for循环的范围中移了出来,编辑了一些我现在添加到这里的东西。我从来没有想到过这一点。它确实解决了我遇到的所有问题。非常感谢你!这些小错误都教会了我一些重要的东西。:)
    for (arraySize = 0; arraySize < maxi; arraySize++) {