函数_字符数组
注意:
空字符不要和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;
}