有一段文字,將文字中的所有單詞,存放到一個字元指標陣列中(要求每個單詞記憶體恰好)
char a[] = " my name is hanmeimei lilei and you no fine thanks ";
int i = 0;//迴圈變數
int j = 0;//記錄每個單詞的長度
int k = 0;//記錄指標陣列的下標
char *words[100] = {0};//定義一個指標陣列,存放堆區空間地址
char tempStr[20] = {0};//定義一個臨時字元陣列,儲存單詞
while (1) {
if (a[i] != ' ' && a[i] != '\0') {
tempStr[j] = a[i];
j++;
} else if(j != 0){
tempStr[j] = '\0';//當a[i]遇到' '或者'\0'時,在臨時字元陣列中補上'\0'
words[k] = malloc(strlen(tempStr) + 1);//在堆區開闢當前字串所需的空間
strcpy(words[k], tempStr);//將臨時陣列中的內容拷貝到堆區中
k++;
j = 0;
}
if (a[i] == '\0') {
break;//當a[i] == 0,跳出迴圈
}
i++;
}
for (int n = 0; n < k; n++) {
printf("%s ", words[n]);
free(words[n]);//釋放空間
words[n] = NULL;//指標指向無效空間
}