C语言中字符与字符串的笔记、总结

引言:字符型数据(char)在内存中以相应的ASCII码存在。计算机中用一个字节(8个二进制)存储一个字符

字符组成字符串,字符可以包括字母、数字、其他字符、转义字符、汉字(一个汉字占两个字符)。

1.接下来,区分三个常量:字符常量、字符串常量与转义字符。

字符常量:用一对单引号括起的一个字符;

转义字符:

\n表示换行;                                                \t表示横向跳格;

\b表示退格(输出位置移动到前一列);        \r表示回车;

\\表示反斜杠字符”\”;                                      \'表示单引号字符;

\"表示双引号字符;                                         \ddd表示八进制数ddd所代表的字符;

\xhh表示十六进制hh所代表的字符。

注意:转义字符占一个字节

 

 字符串常量:用双引号括起来的字符;

字符串的存储:

每个字符串常量有一个字符串结束标志‘\0’在末尾,其中结束标志不记录在字符串的长度计算。

字符串初始化数组:

#include<stdio.h>
int main()
{
char c[5];//定义数组
char a[]="abc";//定义并且初始化数组
char d[]={'c','b','\0'}; //定义并且初始化数组
char f[3]={"ch"};//定义并且初始化数组
return 0;
}

这几个形式可以作为格式;

编程提醒:

1.数组的长度必须比字符串的元素(不包括结束标注)个数多1个,用以存放字符串结束标志。

2.数组名是地址常量,不能将字符串直接赋值给数组名——c=“cd”;是错误的。

3.字符串到第一个'\0'结束。

#include<stdio.h>
int main()
{
char x[5]="ab\0c";
printf("%s",x);
return 0;
}

2.字符串的输入输出(常见的)

2.1 scanf的输入(printf(输出))用格式符“%s”输入字符串,对应的参数应该是数组名,即数组的起始地址或数组元素地址。

#include<stdio.h>
int main()
{
    char c[6];
    scanf("%s",c);//这里的c是数组第一个元素的地址,所以不用加取地址符
    printf("%s",c);
    return 0;
}

代码的运行:

 2.1.2指定宽度输出。

%ms可以按指定宽度输出字符串。

m的情况讲解:

1.当m小于实际宽度时不起作用;

2.当m大于实际宽度时左边补零(右对齐);m前加负号右边补空格。

%.ns表示指定只输出字符串的前s(正整数)个字符

#include<stdio.h>
int main()
{
    char c[6];
    scanf("%s",c);//这里的c是数组第一个元素的地址,所以不用加取地址符
    printf("%.2s\n",c);
    printf("%5s\n",c);
    printf("%-5s",c);
    return 0;
}

运行结果:

2.1.3 用scanf与printf的注意事项:

1.scanf遇到空格、tab、回车符终止,并写入串结束标志'\0';

2.要想在字符串中包含空格、tab、无法用scanf中"%s"输入,可以用gets函数输入;

3.printf一个个输出字符直到遇到'\0'结束,不会自动换行,但是puts输出可以自动换行;

2.2 gets输入与puts输出

2.2.1 使用方式

gets(str);//读入一串以回车结束的字符,顺序存入到以str为首地址的内存单元,最后写入字符串结束标志'\0'。

puts(str);//一个个输出字符直到遇到'\0'结束,最后输出一个换行符。

参数str为字符数组名或其某个元素地址;

#include<stdio.h>
int main()
{
    char c[6],a[5]="56";
    printf("输入:"); 
    gets(c);
    printf("输出:") ;
	puts(c);
	printf("输出:") ;
    puts(a);
    return 0;
}

运行结果:

 

基础部分结束!!!

待更

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值