指针 字符串 字符串库函数

验证大小端存储 :
  1. int main()
  2. {
  3. int a = 0x12345678;
  4. char *p = (char *)&a;
  5. printf("%x\n", *p); // 78 表示这是小端存储
  6. return 0;
  7. }

字符数组:

char name[] = { 'h', 'e', 'l', 'l', 'o' };//错误的 因为后面没有\0
char name[] = "liuwei";

char name[100] = {'h','e','l','l','o'};
char name[100] = { "hello" };
char name[100] = "hello";


字符串也可以这样:
char *p = "hello world";
printf("%s",p); //hello world   p指向字符串首地址,但是一直取到 \0 为止

和字符数组的区别:

char *str = "hello";         //str只有四个字节,保存的只是hello的首地址,而hello存在 代码区
*str = 'H';                        //这种是错误的

char str[] = "hello";  // hello存在栈区
*str = 'H';                   //输入Hello


获取一个字符串的长度,自己实现strlen:                                                             
  1. int str_len(char * p)
  2. {
  3. int len = 0;
  4. while (*p++) // 相当于while(*p++ != '\0')
  5. len++;
  6. return len;
  7. }
  8. int main()
  9. {
  10. char a[100];
  11. gets(a);
  12. printf("%d\n", strlen(a));
  13. return 0;
  14. }

strlen sizeof区别 :
//strlen函数在 <string.h>中

char str[100];
gets(str);                              //假设输入 hello
printf("%d",strlen(str));        //5        字符串有效长度
printf("%d",sizeof(str));        //100    整个字符串数组有多大

strcpy :
char src[100];
char dest[100];
gets[src];
strcpy(dest,src); //dest里面就有了src的值了,都是char *类型
                           //把src拷贝到dest  这个函数的返回值也是 dest 

其他字符串函数:
strcmp    以字典序比较两个字符串大小
strcat       两个字符相连接

strchr (char * s,int c)    在字符串s查找c 如果有,返回c的地址,否则返回null
                                          printf打印的话 是c后面的字符串
  hello , e       // printf  --->   ello


strstr (char *,char * )         在字符串中找子串,找到返回位置的地址,否则返回null
                                            //和strchr极其相似  只是字符和字符串的区别


strtok(char * str,char * delim)    :
  1. #include <stdio.h>
  2. #include <string.h>
  3. int main()
  4. {
  5. char str[] = "hello world ni hao";
  6. char * p = strtok(str," ");
  7. while( p != NULL)
  8. {
  9. printf("%s\n",p);
  10. p = strtok(NULL , " ");
  11. }
  12. return 0;
  13. }
 
另外一种写法
  1. for(p = strtok( buf , " "); p != NULL ; p = strtok(NULL , ""))
  2. {
  3.     printf("%s\n",p);
  4. }


memset :
//函数在 <string.h>中
  1. #include <stdio.h>
  2. #include <string.h>
  3. int main()
  4. {
  5. char s[3];
  6. memset(s,'A',sizeof(s)); //会把s指针前sizeof(s)个字节以参数'A'填入
  7. s[3] = '\0';
  8. printf("%s\n",s); //AAA
  9. return 0;
  10. }




posted @ 2014-09-02 15:30  我爱背单词  阅读(207)  评论(0编辑  收藏  举报