int ReadNames(char ***Names, int *n)
{
int i, k;
char name[100];
printf("Enter how many names\n");
scanf("%d", n);
/* Allocate memory and read names */
*Names=(char **)malloc((*n)*sizeof(char *));
for(i=0;i<(*n);i++)
{
*(*Names+i)=(char*)malloc(sizeof(name));
gets(name);
strcpy(*(*Names+i),name);
}
for(i=0;i<(*n);i++)
printf("%s\n",*(*Names+i));
return 1;
}
void main()
{
char **Names;
int n, i;
ReadNames(&Names, &n);
}
該程序運行良好......但與我所期待的有細微差別。問題是當我輸入'n'的值爲3時,它只能讀取2個字符串並打印這兩個字符串....即。它讀取n-1個字符串並打印n-1個字符串。我的代碼中有任何錯誤。爲字符串動態內存分配
四件事情:首先*不投的'malloc'回報*。其次,爲什麼不使用簡單的數組索引而不是指針算術(比如'(* Names)[i]')。第三,不需要臨時的'name'變量。第四,不要使用'gets',而是使用'fgets'。 –