char str[] = " vaercly love iOS ";//文本
char *temp = malloc(sizeof(str));
strcpy(temp, str);
char *p[3] = {0};//存储堆区的地址
int length = 0;//存储单词的长度
int num = 0;//单词总个数
for (int i = 0; i < strlen(str) + 1; i++) {
if (str[i] != ' ' && str[i] != '\0') {
length++;//若不为空格和'\0', 则长度加1
} else if (length != 0) {
p[num] = malloc(length + 1);//动态分配内存空间,将具体的空间地址存储到对应的指针数组元素中
*(temp + i) = '\0';//将空格替换为'/0'
strcpy(p[num], temp + i - length);//将单词拷贝到对应的堆区空间
num++;//单词个数加1
length = 0;//从0计数
}
}
for (int i = 0; i < num ; i++) {
printf("%s ", p[i]);//输出单词
free(p[i]);
p[i] = NULL;
}
(指针版,无bug版)有一段文本,将文本中的所有单词,存放到一个字符指针数组中(要求每个单词内存恰好)
最新推荐文章于 2022-04-25 00:46:56 发布
本文深入探讨了C语言中字符串操作的关键技巧及内存管理的最佳实践,通过实例展示了如何安全高效地处理字符串和分配内存,以避免常见的编程错误。
4229

被折叠的 条评论
为什么被折叠?



