首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2012-10-18 
这个算是GCC的BUG吗?[codeC/C++][/code]#includestdio.h#define gdb(s) printf(%s,s)struct num{int

这个算是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];
};

热点排行