在此代碼我希望得到一些朋友,然後讓名字我想要的字符串將動態與我有2個功能使用的用戶輸入的lengh分配:動態字符指針數組爲字符串
void getNum(char** names, int* num)
{
//somecode
names = (char*)malloc(*num * sizeof(char));
//check
}
void getNames(char** names, int* num)
{
int i = 0;
int len = 0;
char name[LEN] = { 0 };
getchar(); //buffer cleaning
for (i = 0; i < *num; i++)
{
printf("enter #%d friend name: ", i+1);
myFgets(name, LEN); //getting name and cleaning "\n" at end
len = strlen(name)+1; // getting the size of string include "/0"
*(names + i) = (char*)malloc(len * sizeof(char));
if (*(names[i]) == NULL)
{
printf("Error allocating memory!\n"); //print an error message
return 1; //return with failure
}
strncpy(*names, name, len);
}
}
第二次動態分配對我來說並不奏效,溢出錯誤:「訪問衝突寫入位置」。如果第一次分配將在第二個函數中,它將正常工作。你能解釋一下嗎?我需要爲它做些什麼才能以這種方式工作? 預先感謝您...
編譯所有警告已啓用。並請顯示你如何調用'getnames'和'getNum'。 –
我猜:'names =(char *)malloc(* num * sizeof(char));'應該是'names =(char *)malloc(* num * sizeof(char *));' – LPs
錯誤,'getNum'似乎毫無意義,因爲它在發佈的代碼中被* nothing *調用。 – WhozCraig