Chinaunix首页 | 论坛 | 博客
  • 博客访问: 322441
  • 博文数量: 85
  • 博客积分: 3433
  • 博客等级: 中校
  • 技术积分: 844
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-29 01:11
文章分类

全部博文(85)

文章存档

2013年(1)

2012年(12)

2011年(13)

2010年(59)

我的朋友

分类: LINUX

2010-09-09 20:33:24

strlen
sizeof总结
下面这段小程序是输入一个数字N,然后在字符串前面加N个空格,实际使用过程中发现用sizeof的时候他总是4,也就是指针的大小,因而输出了hell少了个o,上次在调LCD的时候用memset发现用strlen清空不了一个数组,必须用sizeof,总结得出sizeof就是数组在内存中的大小,strlen是字符串的长度不带'\0'。而sizeof的用法是sizeof(int),或者sizeof(array)得出它们在内存中的大小。
  1 #include
  2 #include
  3 #include
  4 int main(void)
  5 {
  6         int n1,i,num;
  7         char *array = "hello";
  8         char *tmp;
  9         puts("输入一唯长度");
 10         tmp = array;
 11         num = strlen(array);
 12         scanf("%d",&n1);
 13         array=(char *)malloc((n1 + num)*sizeof(int));
 14         for (i = 0; i < n1; i++)
 15         {
 16                 array[i] = ' ';
 17                 printf("%c\t",array[i]);
 18         }
 19         memcpy(array+n1-1,tmp,strlen(tmp));
 20         printf("%s\n",array);
 21         free(array);
 22         return 0;
 23 }
memcpy,memset,memmove,strcpy,strncpy
今天发现一个问题,strcpy 和 strncpy 拷贝的时候要注意保证他们拷贝到的地址有没有足够的空间存放。


 
阅读(1755) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~