第六课
1,字符:用单引号【‘’】括起来;【字符串一定是字符数组,字符数组不一定是字符串】
2,字符串:由字符组成用双引号【“”】括起来;【注意:由‘\0’结尾】
1 字符串都是用字符数组存储的;【】
2 字符数组初始化的两种方式:
{
1,直接使用逐个字符进行初始化,但不会自动加上'\0';
2,使用""的方式初始化数组,会自动添加'\0';【注意:数组存储大小足够】
}
3,用指针给字符串赋值和用数组赋值的区别
#include<stdio.h>
int main()
{
char* a="ABCD";//这里的字符串是常量,无法修改;
char b[10]="ABCD";//用数组存的字符串是变量,可以修改;
//a[0]='W';发生错误
b[0]='W';
printf("%s",b);//输出 WBCD
return 0;
}
4,字符数组的输入
1,使用scanf,遇到空格会自动截断,遇到回车结束,并自动加上'\0';【注意:不会进行越界检查】
2,使用gets/get_s,能读取空格,遇到回车结束,自动添加'\0';【注意:输入超出范围时,会进行越界检查】
5,#include<string.h>里的常用函数
#include<stdio.h>
#include<string.h>
int main()
{
1,strlen(求字符串的实际长度)
【原型:int Strlen(const char *str)】
//注意:不含'\0';
//注意:区别sizeof,sizeof是计算定义变量占用的内存的大小;
2,strcpy(把后面的字符串复制到前面的数组中)
【原型:char *strcpy(char *dest, const char *src)】 //常用于给数组整体赋值
//注意:strcpy()遇到'\0'会结束且包含'\0';
//注意:防止越界,确保dest能存下src;
3,strcmp(字符串比较,前面>后面返回正数,前面<后面返回负数,前面等于后面返回0)
【原型:int strcmp(const char *str1, const char *str2)】
//注意:是对每一个字符进行比较,相应的ASCII表上的十进制数
4,strcat(把后面的字符串连接到前面的字符串后面)
【char *strcat(char *dest, const char *src)】
//注意:防止越界,确保dest能存下src;
return 0;
}
6,printf与sprintf的区别
#include<stdio.h>
int main()
{
char str[10]="hallo";
//printf("%s\n",str);直接在屏幕上显示字符串 hallo
sprintf(str,"hallo %s","world");
printf("%d",str);//输出了 hallo world
return 0;
}
7,清屏函数
#include<stdlib.h>
//调用 system("cls");
8,冒泡排序
#include<stdio.h>
int main()
{
int num[10] = {
5,3,1,4,7,8,6,9,0,2 };
for (int i = 0; i < 10-1; i++)//i为排序的轮数//若有n个数据则需要 n-1 轮
{
for (int k = 0; k < 10-1-i; k++)//k为每一轮比较的次数
{
if (num[k]>num[k+1])
{
int t = num[k];
num[k] = num[k + 1];
num[k + 1] = t;
}
}
}for (int i = 0; i < 10; i++)
{
printf("%d ", num[i]);
}
return 0;
}
9.字符串逆序
#include<stdio.h>
#include<string.h>
void reverse()//逆序输出字符串
{
char str[] = "I love China";
int len = strlen(str);
for (int i = 0; i < len/2; i++)
{
char t = str[i];
str[i] = str[len - 1 - i];
str[len - 1 - i] = t;
}
puts(str);
}
int main()
{
reverse();
return 0;
}
10,模拟密码登录
#include<stdio.h>
#include<string.h>
#include<conio.h>
void cypher()
{
char* userName = "hallo";//原用户名
char* password = "666666";//原密码
char Name[50] = "";
char pswd[50] = "";
int index=0;
printf("输入用户名:");
gets(Name);
printf("输入密码:");
while (1)
{
char key = _getch();
if (key=='\r')//'\r'为回车键
{
pswd[index] = '\0';
break;
}
else if (key == '\b')//'\b'为退格键
{
if (index > 0)
{
index--;
}
printf("\b \b");
}
else
{
pswd[index++] = key;
printf("*");
}
}
if (strcmp(userName, Name) == 0 && strcmp(password, pswd) == 0)
{
printf("\n登陆成功\n");
return 666;
}
else
{
printf("\n登陆失败\n");
}
}
int main()
{
cypher();
return 0;
}
```