好的,所以不是很清楚。我想要做的是:
while (//something) {
char * tempuser;
char * users[100];
tempuser = "bobsmith" //I'm not actually doing this. But using a method that does the same thing
users[i] = tempuser;
}
" bobsmith"每次循环都是不同的。如果我按原样运行5次,最后一次输入是" janetsmith"在此之前阵列中的所有5个位置,无论在分配时是否有所不同,所有最终都为" janetsmith"。我应该如何分配用户[i]以使其在所有索引中具有不同的值?
答案 0 :(得分:0)
不要在循环体中创建数组users
,并使用strdup
在数组中创建具有相同内容的新字符串。请记住,您正在使用指针而不是某种字符串对象。数组中的每个条目都保存内存中文本的地址。
char *users[100]={0}; //one hundred pointers that are null so You don't use a wild one.
int i=0;
while(/*whatever*/) {
char *tmp=getsometext(); //returns char pointer
users[i++]=strdup(tmp); //copies contents pointed by tmp into new memory location and returns its address
}
//don't forget to free every pointer when You are done.
答案 1 :(得分:0)
这是因为您正在分配变量tempuser的地址。到最后,它将始终保持" janetsmith"的地址。尝试使用malloc()函数动态创建变量。
答案 2 :(得分:0)
char * users[100]; //with this you can use it outside while
while (//something) {
static unsigned int i = 0;
//char * tempuser;
//tempuser = "bobsmith" //I'm not actually doing this. But using a method that does the same thing
users[i] = method_which_return_char_pointer();
i++;
if( 100 <= i)
i=0;
}
这是你的简短问题解释。