C语言第六章-字符数组2

字符数组

#include <stdio.h>
#include <stdlib.h>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char *argv[]) {
	
	//C语言中的字符数组 
	//补充: 
//	char c[] = {'i',' ','a','m',' ','h','a','p','p','y'};//压根就没有\0 只有10个元素 一般不用 
//	char d[] = {"i am happy"};//系统自动分配\0作为结尾  11个元素 
	
	//字符数组的输入输出
	//字符串处理函数 
	
//	char a[] = "China";//后面自带\0 
//	printf("%s\n",a); 
	
	//a printf输出的字符串中不包括\0(字符串结束标记) 输出并没有\0 
	//b %s 对应的是字符数组 
	//c 即便是数组的长度大于字符串实际长度 也只输出到\0结束
			//比如说:char a[100] = "China"; 它也只是输出到\0就会结束 剩下全是0 
	//d 如果一个字符数组里 包含多个\0,printf也只是遇到第一个\0就会停止输出
//	a[2] = '\0';
//	printf("%s\n",a);
	
	//键盘输入字符串 用scanf完成 
//	char b[100];
//	scanf("%s",b);//从键盘输入一个字符串 
//	printf("%s\n",b); //输出出去
	//输入的不可以超过数组的长度 要不然会有隐患 
	
	//输入多个字符串
//	char str1[10],str2[10],str3[10];
//	scanf("%s%s%s",str1,str2,str3); 
//	printf("%s\n%s\n%s\n",str1,str2,str3); 
	
//	//第一次设置str这个字符数组变量时候,和&str是被同等看待的,在电脑里地址一般就是用0xXXXXXXX 
//	int i;
//	printf("%d\n",&i); //打印出的i在计算机中的是地址值  6487628
//	printf("%d\n",i);  //打印出的是i的值 0
//	
//	//但是作为字符数组来说 &str 和 str输出的是一样的 
//	int a[200];
//	printf("%d\n",&a);	//6486816 都是一样的 显示的是地址值 
//	printf("%d\n",a);	//6486816
//	
//	//在C语言中 一堆字符数组 就可以看成字符串变量
//	//字符串处理函数
//	//1 puts(字符串数组):将一个字符串输出到屏幕 注意只能是一个字符串 
//	char str[100] = "Are you OK";//李里边包含一个\0 
//	puts(str);
//	printf("%s\n",str); 
//	
//	//2 gets(字符数组名) :从键盘输入就一个字符串到字符数组中,只能输进去一个字符串;
//	char str2[100]; 
//	gets(str2); 
//	printf("%s\n",str2); 
	
	//以上两个属于了解即可,下边这个是需要掌握的 
	//3 strcat 连接两个字符数组中的字符串吗,把字符串2连接到字符串1的后面 结果放在字符1中 
	//注意:
	//字符数组1必须要足够大,可以包容数组2能加进到数组1当中,可以变成一个新的字符串
	//连接之前两个字符都有一个\0,链接时,将字符串中的1后边的\0直接取消掉了,连接后只在新串的后面加个\0 
//	char one[10] = "one";
//	char two[10] = "two";
//	strcat(one,two);
//	printf("%s\n",one); 
	
	
	//4 strcpy(字符数组1,字符串2),常用函数,必须用心掌握
	//将字符串2拷贝到字符数组1当中,字符数组1中的内容将会被覆盖 ,不要搞反了 把右边的内容向左边拷贝
//	char new1[20] = "one1234";//注意这里:new1内的下标一定要比new2内的下标大 也就是字符数组1必须足够大,以便可以容纳下被拷贝的字符串,也就是字符数组1的长度不能小于字符串2的长度 
//	char new2[15] = "two"; //new1必须是个字符数组,必须有数组名,但是字符串2可以是个数组名字也可以是个字符串常量 
//	strcpy(new1,new2);//拷贝的时候,是连着同字符串后边的\0也一起拷贝到字符数组中去了 
//	printf("%s\n",new1); //two
	//注意:
	//如果将字符数组定义之后,必须用strcat这个函数才能给它赋值
	// str = "haha"; 
	//str1 = str2; 这两种都是非法的 不允许这么赋值  char i[] = "WEWEEW"; 这是初始化 不是赋值 
	
	//当然了 有赋值语句
	//但是只能将一个字符赋值给一个字符型变量或者数组元素
//	char a[5]; //后续引用只能是a[0]-a[4] 
//	a[0] = 'A';
//	//....a[5]不可以
//	c1 = "a";
	
	//5  strcmp(字符串1,字符串2) 
	//比较两个字符串的大小
	//对两个字符串从左至右逐个字符进行比较(ascii比较)一直出现\0为止 
	//若出现不同的字符,则以第一个不相同的字符比较结果为准 
	//后边大的话是-1 前面大的话是1 相等是0 
//	int biger; 
//	char com1[10] = "123456";
//	char com2[10] = "123956"; 
//	biger = strcmp(com1,com2);
//	printf("%d\n",biger); 
	//其实这个常用于字符串比较相等不相等 不用于比较谁大 
//	if(biger == 0){//不能是 com1 == com2  因为这样比较的是地址值 就肯定不相同 
//	}
	
	//6 strlen(字符数组) //重点函数
	//测色字符串的长度 不包括\0
	char strx[120] = "ope1"; //4 
	char stry[150]	= "断点abc停这";	//	11 
	int len1 = strlen(strx);
	int len2 = strlen(stry);
	printf("%d\n%d\n",len1,len2); 
	
	//sizeof()
	int a;
	int soa = sizeof(a); 
	printf("%d",soa); //sizeof所占的内存字节数,和a中保存的内容无关 int占的内存字节数是 4
	int sob = sizeof(int); //这样也可以 他是求的这个类型所占的字节数 
	//int是4 double是8 
	
	//特别的如果查strx的字节数的话 最后sizeof(strx)的值是120 跟strx内的值没有关系 
	
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值