字符串与字符数组的关系

来源:互联网 发布:手机号数据购买 编辑:程序博客网 时间:2024/06/05 16:50

实现字符串与字符数组的连接

#include "stdafx.h"int _tmain(int argc, _TCHAR* argv[]){#if 0char name[10] = { 'a', 'b', 'c', 'd', 'e', 'f', 'g' };for (int i = 0; i < 10; i++){*(name + i) = 'm'; //数组可以改变内容printf("%c", *(name + i));}printf("\n===================================\n");char* pname = "wangguilin";//将wangguilin存储到data的只读数据段                            //只是编译了首地址 将首地址赋值给了pnamefor (int i = 0; *(pname + i) != '\0'; i++) //循环条件为判断\0{//*(pname+i)=100; 不能改变只读的内容printf("%c", *(pname + i));}printf("-----------------------------------\n");printf("name=%d\n", sizeof(name));  //打印长度大小printf("name=%p\n", name); //打印name数组的首地址printf("name+1=%p\n", name + 1); //打印数组中第二个元素的首地址printf("\"wangguilin\"=%d\n", sizeof("wangguilin")); //打印字符串的长度大小printf("\"wangguilin\"=%p\n", "wangguilin"); printf("\"wangguilin\"+1=%p\n", "wangguilin" + 1);#endif//字符串本身是以常量存在,但是,有这样的需要,去改变字符串的内容//此时需要把字符串常量,放到字符数组中去(相当于赋值一个副本)//字符串常量的性质和字符数组的性质完全吻合 所以就给=两边找到切合点char name[100] = "wangguilin";  //字符串赋值字符数组 为了进行操作字符串//俩种打印方式都可以,name和"wangguilin"都是常量字符指针printf("%s\n", name); printf("%s\n", "wangguilin");//只有name存放的是字符串时(有'\0')可以%s打印,是字符数组时(没'\0')//不能用%s打印,用for循环打印name[6] = 'Y'; //可以对数组进行更改 但是常量区的"wangguilin"不能更改printf("%c\n", name[6]); printf("%c\n", "wangguilin"[6]);printf("%s\n", name); printf("%s\n", "wangguilin");return 0;}


在字符数组中手动输入字符串

#include "stdafx.h"int _tmain(int argc, _TCHAR* argv[]){//要实现等价交换,字符数组的大小要比字符串的大小至少大1个char name[] = "china"; //默认的会把字符串的'\0'拷贝到数组中去//printf("sizeof(name)=%d   sizeof(\"china\")=%d\n", sizeof(name), sizeof("china"));char buf[10] ; //不要越界写入,最多写入9个,保证后面有个'\0' scanf 自动加入//scanf("%s", buf);     //输入的字符中如果有空格的话 打印时候只显示空格之前的字符串//printf("%s\n", buf);  //注意字符数组不能这样打印 此时打印仅为scanf中输入的字符串                         //字符数组打印需要用for循环printf("请输入字符串(不超过9个):");gets(buf);  //可以把空格读出来,也会自动加入'\0'puts(buf);  //在输出结束后自动加\n换行return 0;}




原创粉丝点击