读书人

这个算是GCC的BUG吗?解决思路

发布时间: 2012-10-18 13:46:55 作者: rapoo

这个算是GCC的BUG吗?
[code=C/C++][/code]#include<stdio.h>
#define gdb(s) printf("%s",s)

struct num{
int val;
char str[];
};

int _getLine(char str[]);

int main(){
struct num e[4];
int i,j;

for(i=0;i<4;++i){
j=_getLine(e[i].str);
printf("%d and i is %d",j,i);
gdb("fuzhi\n");
}

for(i=0;i<4;++i){
//printf("%d ",e[i].val);
printf("%s ",e[i].str);
gdb("shuchu\n");
}

gdb(e[3].str);
printf("\n");
return 0;
}

int _getLine(char str[]){
int c,m;
m=0;
while((c=getchar())!=EOF&&c!='\n'){
str[m]=c;
++m;
}
str[m]='\0';
return m;
}

这是输出,每次的输出还都不一样,i的最后一个值竟然不是3




[解决办法]
struct num中的str没有分配空间就直接用了,会有内存覆盖的隐患,改成如下的:
struct num{
int val;
char str[81];
};

读书人网 >C语言

热点推荐