令人困惑的C分割问题

时间:2015-10-23 02:51:41

标签: c

数组的声明是bulbState [101]。所以它是一个由101个元素组成的数组。这是给出此错误的代码部分。 在for循环之前,打印数组的第100个元素,并在for循环之后“After this”字符串不打印。

void printBulbState()
{
    int i;
    printf("100th %d", bulbState[100]);
    for ( i = 1; i < 101; i++) {
            printf("\nbulbState[%d] = %d", i, bulbState[i]);
    }
    printf("After for");
}

1 个答案:

答案 0 :(得分:0)

我添加了一个main()来驱动printBulbState()函数以及bulbState数组的声明和初始化。

我修改了对printf()的最后一次调用

我认为,问题的根源是操作系统对缓冲区的缓冲。 落后&#39; \ n&#39;在格式字符串或调用fflush(stdout) 导致缓冲区被刷新

这是完美无缺的代码

#include <stdio.h>

void printBulbState( void );

int bulbState[101];

int main( void )
{
    for(int i = 0; i< 101; i++ ) bulbState[i] = i;
    printBulbState();
    return 0;
}


void printBulbState()
{
    int i;
    printf("100th %d", bulbState[100]);
    for ( i = 1; i < 101; i++) {
            printf("\nbulbState[%d] = %d", i, bulbState[i]);
    }
    printf("\nAfter for\n"); // notice format string change
}