字符串问题请教.
输入一串只有数字和字母的字符,把字母按原来的顺序排在前段,把数字按原来的顺序排在后段。书上给了个程序实例,如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *fun(char *s)
{
int i, j, k, n;
char *p, *t;
n = strlen(s) + 1;
t = (char *)malloc(n * sizeof(char));
p = (char *)malloc(n * sizeof(char));
j = 0; k = 0;
for (i = 0; i < n; i++)
{
if (s[i] >= 'a' && s[i] <= 'z' || s[i] >= 'A' && s[i] <= 'Z')
t[j++] = s[i];
else
p[k++] = s[i];
}
for (i = 0; i < k; i++) t[j + i] = p[i];
t[j + k] = 0;
return t;
}
main()
{
char s[80];
printf("Please input a string:\n");
scanf("%s", s);
printf("\n The result is:\n %s\n", fun(s));
}
运行完全正确。我的疑问是 他的明明使用malloc分配了内存,为什么不使用free释放?
是不是此时没释放的必要,或者必须释放而书本没有起到示范和榜样的作用?