不用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