char a[100] = {0};
printf("请输入一个字符串:");
scanf("%[^\n]", a);
char temp[20] = {0};//定义一个数组用来保存单词
char *p[100] = {0};//指针数组//用来存地址
int i = 0, j = 0, k = 0;//i是字符串a每个元素的下标, j是累计的单词元素的下标, k是数组p的元素下标
while (1) {
if (a[i] != ' '&& a[i] != '\0') {//当元素不等于空格时 数组a中的元素给temp
temp[j] = a[i];
j++;
} else //当元素等于空格时
{
temp[j] = '\0';
*(p + k) = malloc(strlen(temp) + 1);//向操作系统申请一段堆内存空间
strcpy(*(p + k), temp);//拷贝函数
k++;//每赋给它一个元素 ,元素标号增加一个
j = 0;
}
if (a[i] == '\0') {
break;
}
i++;
}
for (int i = 0; i < k; i++) {
printf("%s\t", *(p + i));
free(p[i]);
*(p + i )= NULL;
}
printf("请输入一个字符串:");
scanf("%[^\n]", a);
char temp[20] = {0};//定义一个数组用来保存单词
char *p[100] = {0};//指针数组//用来存地址
int i = 0, j = 0, k = 0;//i是字符串a每个元素的下标, j是累计的单词元素的下标, k是数组p的元素下标
while (1) {
if (a[i] != ' '&& a[i] != '\0') {//当元素不等于空格时 数组a中的元素给temp
temp[j] = a[i];
j++;
} else //当元素等于空格时
{
temp[j] = '\0';
*(p + k) = malloc(strlen(temp) + 1);//向操作系统申请一段堆内存空间
strcpy(*(p + k), temp);//拷贝函数
k++;//每赋给它一个元素 ,元素标号增加一个
j = 0;
}
if (a[i] == '\0') {
break;
}
i++;
}
for (int i = 0; i < k; i++) {
printf("%s\t", *(p + i));
free(p[i]);
*(p + i )= NULL;
}