我遇到了填充動態創建的字符串數組的問題。該數組基本上包含兩個字符串,我想用它們的長度來打印它們。我得到了一個非常奇怪的結果,即內存位置越來越混亂。請參閱下面的代碼。填充動態c數組時遇到問題
任何建議將不勝感激。謝謝。
void printWords(char **words, int numberOfWords)
{
int index;
for (index = 0; index < numberOfWords; index++)
{
printf("%s, %d\n", &(*words)[index], (int)strlen(&(*words)[index]));
}
}
void fillWords(char **words)
{
*words = malloc(2 * sizeof(char *));
char hello[] = {"Hello"};
(*words)[0] = (char)malloc(strlen(hello) * sizeof(char));
strcpy(&(*words)[0], hello); //Copy word into array
char world[] = {"Worldz"};
(*words)[1] = (char)malloc(strlen(world) * sizeof(char));
strcpy(&(*words)[1], world); //Copy word into array
}
int main (int argc, const char * argv[])
{
char *words;
fillWords(&words);
printWords(&words, 2);
return 0;
}
預期的輸出應該
Hello, 5
Worldz, 6
但是我得到
HWorldz, 7
Worldz, 6
作業?沒問題,如果它是:) – pmg 2011-04-02 20:37:25
哈哈,是的。我修好了它。 – David 2011-04-02 20:52:47