目录
1 字符型数组的输入和输出
1.gets
char str[12];
gets(str);
注意:
1.可以接收' '(空格)字符
2.会去掉从终端接收的\n字符
2.puts
char str[12];
puts(str);
注意:
1.puts会加上\n字符 ,然后打印在终端
3.scanf
char str[12];
scanf("%s", str);
注意:
1.scanf无法接收' '字符
2.scanf使用%s不需要加&符号
4.printf
char str[12];
printf("str = %s\n", str);
2 字符型数组的初始化
1.全部初始化
char str[6] = {"hello"};
char str[6] = "hello";
char str[6] = {'h', 'e', 'l', 'l', 'o', '\0'};
2.局部初始化
char str[6] = {"hel"};
char str[6] = "hel";
char str[6] = {'h', 'e', 'l'};
char str[6] = {0};
注意:
没有给定初值的元素会被赋值为0('\0')
3.默认初始化
char str[] = {"hello"};
char str[] = "hello";
char str[] = {'h', 'e', 'l', 'l', 'o'};
3 字符型数组的存储
1.连续性:内存空间连续
2.有序性:数据存储顺序有序
数组所占空间大小 = 每个元素所占空间大小 * 元素个数
4 字符串常见的操作函数(添加头文件string.h)
1.strlen:
获得字符串的长度(从字符串开头到最近的\0中间元素个数)
2.strcpy
字符串的拷贝
注意:
字符串的赋值不能使用=,要用strcpy
3.strcat
字符串的拼接
注意:
字符串的加法不能使用+,要使用strcat
4.strcmp
字符串的比较 (逐个比较)
获得两个字符串比较的结果
相等返回0
第一个字符串>第二个字符串返回>0的值
第一个字符串<第二个字符串返回<0的值
5 字符串遍历操作
char str[32];
int i = 0;
while (str[i] != '\0')
{
str[i]; //访问每一个字符
i++;
}
6 范例
eg: 从终端接收一个字符串,统计该字符串中大写字母、小写字母、数字及空格的个数
#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[])
{
char str[32] = {0};
int cnt1 = 0;
int cnt2 = 0;
int cnt3 = 0;
int cnt4 = 0;
int len = 0;
int i = 0;
printf("请输入字符串 :");
gets(str);//接受空格
len = strlen(str);
for(i = 0;i < len;i++)
{
if(str[i] >= 'a' && str[i] <= 'z')
{
cnt1++;
}
else if(str[i] >= 'A' && str[i] <= 'Z')
{
cnt2++;
}
else if(str[i] >= '0' && str[i] <= '9')
{
cnt3++;
}
else if(' ' == str[i])
{
cnt4++;
}
}
printf("小写字母的个数为:%d个\n",cnt1);
printf("大写字母的个数为:%d个\n",cnt2);
printf("数字的个数为:%d个\n",cnt3);
printf("space的个数为:%d个\n",cnt4);
return 0;
}