C语言中令人费解的分词问题
数组的声明为bulbState[101]。这是一个101个元素的数组。这是给出此错误的代码部分。 在for循环之前,将打印数组的第一百个元素,而在for循环之后,不会打印“after this”字符串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] =
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个元素,那么代码就没有理由不工作。