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

不用heap保存1000个string,求解法解决办法

2012-04-14 
不用heap保存1000个string,求解法C的初学者,学校刚学C中。有一道题中一部分要求读取不大于1000个名字,不能

不用heap保存1000个string,求解法
C的初学者,学校刚学C中。有一道题中一部分要求读取不大于1000个名字,不能用heap。我本来对保存1000个名字是这样想的

int main (void) {
  int pos = 0;
  char *a[1000];
  while(pos<1000){
  char name[21];
  readstring(name,20); //readstring 会scanf一个string,然后保存在name里面。如过scanf的string
  a[pos] = name; //长度大于20个char,则仅保存前20个字符。
  pos=pos+1;
  }
  return 0;
}

在上面的程序中,我发现每一次char name[21]所被分配的地址都是相同的,这导致了所有保存在a[]里面的string都是一样的,也就是保存了N个相同的名字。求高人指点

[解决办法]

C/C++ code
int main(){    int pos = 0;    char a[1000][21];   // char *a[1000] 这样用的时候要自己分配内存    while(pos<4)    {        char name[21];        readstring(name,20); //readstring 会scanf一个string,然后保存在name里面。如过scanf的string        strcpy(a[pos], name); //长度大于20个char,则仅保存前20个字符。        pos=pos+1;    }        return 0;}
[解决办法]
readstring(a[pos], 20);这样不行吗?
[解决办法]
想不用二维数组 就自己定义一个结构体 每个结构体都有个char【21】 顶一个结构体数组1000 因为你是学c而不是c++ c++直接string 【1000】就ok

热点排行