C语言第64+65课初识字符串与字符数组

·字符串
	·使用字符型数组存储
	·每个存储单元占一个字节
	·以空字符结尾
	·注意空字符不要和NULL混淆
	·空字符是字符串的终止符
	·NULL是一个符号,表示不引用任何内容的内存地址
	
·定义字符串的几种方式

				//**************************************************************************************program
				#include <stdio.h>
				#include <stdlib.h>
				
				int main()
				{
					//定义字符串的几种方式
					//字符串和字符数组的区别:最后一位是否是空字符
					char names1[] = {'j','a','c','k','\0'};//如果没有'\0',那么定义的就不是字符串,是字符型数组
					char names2[] = "jack";
					char *names3  = "jack";
				
				
					printf("数组所占空间大小:%d\n",sizeof(names1));//结果是5,因为有一个是空字符
					printf("数组所占空间大小:%d\n",sizeof(names2));//结果是5,因为有一个是空字符
					printf("数组所占空间大小:%d\n",sizeof(*names3));//结果是1
					return 0;
				}
				//**************************************************************************************program

·字符串的动态输入方式

				//**************************************************************************************program

				#include <stdio.h>
				#include <stdlib.h>
				int main()
				{
					char names2[50];
					printf("请输入新名称:");
					scanf("%s", names2);//数组名本来就是一个地址,所以不需要“&”了
					printf("%s\n", names2);
					return 0;
				}
				//**************************************************************************************program

·get puts函数补充

					·只能获得字符串
						·gets(names2);//scanf("%s", names2);
						·注意:gets函数不对接受字符串的buffer进行边界监测,会造成越界,从而产生bug
						·改进可以用fgets(#include <string.h>)
						·fgets(names2, 10, stdin);//从标准输入流(标准的input)中读取10个字节(10-1个数字+‘\n’)到names2
						
					·只能输出字符串
						puts(names2);//printf("%s\n", names2);
						
·随堂练习
		·书写函数,返回传入字符串的长度
		·分别使用gets函数和fgets函数
		
		
		
				//**************************************************************************************program
				#include <stdio.h>
				#include <stdlib.h>
				//返回传入字符串的长度
				int GetStrLength(char[]);
				int GetStrLength(char str[])
				{
					int count = 0;  //字符串中字符的个数
					while(str[count] != '\0')
					{
						if(str[count] == '\n') //将‘\n’替换成‘\0’
						{
							str[count] == '\n';
							break;
						}
						count++;
					}
					return count;
				}
				int main()
				{
					char names1[] = {'j','a','c','k','\0'};
				// fgets(names1,5,stdin); 这样打印的结果会多一个\n,输入abc,显示长度4
					int len  = GetStrLength(names1);
					printf("字符串的长度为:%d\n", len);//长度4
					return 0;
				}
				//**************************************************************************************program


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值