C语言 memset函数
写了一个memset示例程序,运行后有乱码,请高手指教____________________________分割线___________________________...
写了一个memset示例程序,运行后有乱码,请高手指教
____________________________分割线________________________________
#include<stdio.h>
#include<string.h>
void pr( char * );
void main()
{
char xx[10],*a,yy[20],*b;
a=(char *)memset(xx,'1',10);
b=(char *)memset(yy,'a',20);
pr(a);
pr(b);
}
void pr( char *ss )
{
int i;
for(i=0;i<strlen(ss);i++)
{
printf("%c ",ss[i]);
}
putchar('\n');
}
___________________________分割线______________________________
运行结果: 展开
____________________________分割线________________________________
#include<stdio.h>
#include<string.h>
void pr( char * );
void main()
{
char xx[10],*a,yy[20],*b;
a=(char *)memset(xx,'1',10);
b=(char *)memset(yy,'a',20);
pr(a);
pr(b);
}
void pr( char *ss )
{
int i;
for(i=0;i<strlen(ss);i++)
{
printf("%c ",ss[i]);
}
putchar('\n');
}
___________________________分割线______________________________
运行结果: 展开
5个回答
展开全部
memset
原型:extern
void
*memset(void
*buffer,
int
c,
int
count);
用法:#include
<string.h>
功能:把buffer所指内存区域的前count个字节设置成字符c。
说明:返回指向buffer的指针。
举例:
//
memset.c
#include
<syslib.h>
#include
<string.h>
main()
{
char
*s="Golden
Global
View";
clrscr();
memset(s,'G',6);
printf("%s",s);
getchar();
return
0;
}
相关函数:bzero,setmem,strset
原型:extern
void
*memset(void
*buffer,
int
c,
int
count);
用法:#include
<string.h>
功能:把buffer所指内存区域的前count个字节设置成字符c。
说明:返回指向buffer的指针。
举例:
//
memset.c
#include
<syslib.h>
#include
<string.h>
main()
{
char
*s="Golden
Global
View";
clrscr();
memset(s,'G',6);
printf("%s",s);
getchar();
return
0;
}
相关函数:bzero,setmem,strset
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<stdio.h>
#include<string.h>
void pr( char * );
int main()
{
char xx[11],*a,yy[21],*b;
// 数组初始化,用字符串结束符:'\0'
memset(xx,'\0',sizeof(xx));
a=(char *)memset(xx,'1',sizeof(xx)-1);
pr(a);
memset(yy,'\0',sizeof(yy));
b=(char *)memset(yy,'a',sizeof(yy)-1);
pr(b);
return 0;
}
void pr( char *ss )
{
int i;
for(i=0;i<strlen(ss);i++)
{
printf("%c ",ss[i]);
}
putchar('\n');
}
#include<string.h>
void pr( char * );
int main()
{
char xx[11],*a,yy[21],*b;
// 数组初始化,用字符串结束符:'\0'
memset(xx,'\0',sizeof(xx));
a=(char *)memset(xx,'1',sizeof(xx)-1);
pr(a);
memset(yy,'\0',sizeof(yy));
b=(char *)memset(yy,'a',sizeof(yy)-1);
pr(b);
return 0;
}
void pr( char *ss )
{
int i;
for(i=0;i<strlen(ss);i++)
{
printf("%c ",ss[i]);
}
putchar('\n');
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
问题出在strlen上,strlen计算字符串长度时,是以结束符为‘0’计算的。如果字符数组最后一个是‘0’,就不会出现问题了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
printf("%d \n",strlen(ss)); //在这加一句你就知道了
for(i=0;i<strlen(ss);i++)
.....
for(i=0;i<strlen(ss);i++)
.....
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
该说的二楼已经说很清楚了,我补充一点,就是这个函数常用来在malloc后,将这段内存空间清空(如置0),以防在使用时(尤其是字符串)读出内存的随机值。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询