Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.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 - Fatal编程技术网

C语言中令人费解的分词问题

C语言中令人费解的分词问题,c,C,数组的声明为bulbState[101]。这是一个101个元素的数组。这是给出此错误的代码部分。 在for循环之前,将打印数组的第一百个元素,而在for循环之后,不会打印“after this”字符串 void printBulbState() { int i; printf("100th %d", bulbState[100]); for ( i = 1; i < 101; i++) { printf("\nbulbState[%d] =

数组的声明为bulbState[101]。这是一个101个元素的数组。这是给出此错误的代码部分。 在for循环之前,将打印数组的第一百个元素,而在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");
}
void printBulbState()
{
int i;
printf(“第100%d”,bulbState[100]);
对于(i=1;i<101;i++){
printf(“\n基本状态[%d]=%d”,i,基本状态[i]);
}
printf(“后为”);
}
我添加了一个main()来驱动printBulbState()函数以及一个bulbState数组的声明和初始化

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

我认为,问题的根源在于操作系统对标准输出的缓冲。 格式字符串中的尾随“\n”或对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
}
#包括
无效打印状态(无效);
int bulbState[101];
内部主(空)
{
对于(inti=0;i<101;i++)bulbState[i]=i;
printBulbState();
返回0;
}
void printBulbState()
{
int i;
printf(“第100%d”,bulbState[100]);
对于(i=1;i<101;i++){
printf(“\n基本状态[%d]=%d”,i,基本状态[i]);
}
printf(“\n后表示\n”);//请注意格式字符串的更改
}

那是。。。不寻常。您确定“After for”与项目100不在同一行上打印吗?如果将其更改为
printf(“\n之后为\n”)?是,先生“for”之后是否未打印确保未打印?添加一个\n如何声明
bulbState
?拥有整个代码将使事情变得更简单。可能在
printBulbState
返回后,您会得到一个segfault,并且缓冲区中挂起的输出没有打印出来?如果
bulbState
int
的数组,并且至少有101个元素,那么代码就没有理由不工作。