代码练习——函数_字符数组

函数_字符数组
注意:
空字符不要和NULL混淆
空字符是字符串的终止符,而NULL是一个符号,表示不引用任何内容的内存地址

字符串和字符数组的区别:最后一位是否是空字符

# include<stdio.h>
int main()
{
	int i;
	char name1[] = {'j','a','c','k','\0'};
	char name2[50] = "jack";
	//printf("%c\n",name1[4]);
	//printf("数组所占空间的大小:%d\n",sizeof(name1));
	//printf("数组所占空间的大小:%d\n",sizeof(name2));

	//字符串动态输入方式
	printf("请输入新的名称:");
	//gets(name2);//scanf("%s",name2);
	//puts(name2);//printf("%s\n",name2);
	
	注:
	1、gets函数不对接受字符串的buffer进行边界检测,会造成越界,从而产生过BUF
	2、可以使用fgets(words1,20,stdin);代替gets,20表示最多读入1至20个字符

	fgets(name2,5,stdin); //从标准输入流中读取5个字符到数组name2中
	//fgets 会默认给最后一个元素设置为\n
	puts(name2);
	printf("输入数组name2中各元素的值:\n");
	for(i = 0; i < 5; i++)
	{
		printf("%d\n",name2[i]);
	}
	
	return 0;
}


注意:
声明存储字符串的数组时,数组大小至少比所存储的字符数多1,
因为编译器会自动在字符串常量的末尾添加空字符  \0
    


练习1
书写函数,返回传入字符串的长度
分别使用gets函数和fgets函数


# include<stdio.h>
# define N 20

//函数原型
void input(char name[]);//输入函数
int Strlength(char);  //返回字符串长度

int main()
{
	char name[N];
	input(name);
	
	printf("字符串长度是:%d \n",Strlenth(name));
	return 0 ;
}

void input( char name[])
{
	printf("请输入字符串");
	gets(name);
	//fgets(name,20,stdin);
	//puts(name);
	//printf("%d",sizeof(name));
}

int Strlenth(char name[])
{
	int count = 0;
	while(name[count] != '\0')
	{
		count++;
	}
	return count;
}







函数_常用字符串操作函数

# include <stdio.h>
# include<string.h>  //字符串处理函数的头文件
int   main()
{

	//strlen(name1) 获得字符串的长度 ——获得name1数组的长度

	char name1[] = "Helloworld";  
	char name3[] = "你好呀";
	
	printf("name1的长度是:%d\n",strlen(name1));
	printf("name3的长度是:%d\n",strlen(name3)); 



	字符串的复制 srtcpy(str1,str2)
	功能:
		把源字符数组中的字符串复制到目的字符数组中,连同结束标识\0 一同复制 
	
	char str1[50];
	char str2[50];
	printf("输入字符串1:");
	gets(str1);	
	printf("输入字符串2:");
	gets(str2);
	strcpy(str1,str2 ); //把str2中的内容完全复制给str1
	printf("******复制后******\n");
	printf("目的字符串:%s\n",str1);
	printf("源字符串:%s\n",str2);

字符串的连接 —— strcat
将一个字符串
注意:
第一个str1数组的长度要大于等于str1和str2的数组之和

	char str1[100] = "您好,中国!";
	char str2[50 ] = "-你好,money";

	printf("%s\n",str1);
	printf("%s\n",str2);

	printf("连接后为:%s\n",strcat(str1,str2));


	return 0;
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值