在C语言中如何实现字符串数组的内存释放,以防新值和旧值部分“重叠”,导致出乱码,敬请指教。

来源:百度知道 编辑:UC知道 时间:2024/06/04 01:04:45
用C语言,不能用C++,我的代码如下:
#include<stdio.h>
int main()
{
int i,j,k;
char str[30];
do
{
gets(str);
for(i=0;i<30;i++)
{
if((str[i]==' ')||(str[i]=='\0'))
{
for(k=i-1;(str[k]!=' ')&&(k>=0);k--)
printf("%c",str[k]);
printf(" ");
}
}
printf("\n");
/*在这里加一条str“清空”语句,谢了!*/
}while(1);
return 0;
}

#include<stdio.h>
int main()
{
int i,j,k;
char str[30];
do
{
gets(str);
if(strcmp(str,"exit")==0) break;//看到你的程序没有结束,我自已帮你加了一句.当输入为exit时,退出
for(i=0;i<30;i++)
{
if((str[i]==' ')||(str[i]=='\0'))
{
for(k=i-1;(str[k]!=' ')&&(k>=0);k--)
printf("%c",str[k]);
printf(" ");
}
}
printf("\n");
memset(str,0xffff,30);//将str指向的位置往后的30字节全部置255.
//本来是写的memset(str,0,30)的(即清零,0即是'\0'),但分析了你的程序, 只能用前一种.你试试.
}while(1);
return 0;
}

你输入的所有的字符都在str[30]数组中,而在代码中,你把str[30]定义成一个字符数组,清空这个数字很简单,只要利用一些memset就可以了。
memset(str,0,sizeof(str));
第一参数是一个指针,第二个是要清零,第三个参数是要清空数组的大小。