字符串总结
字符:
1.char ab='A'; ab='\101'; ab='\x41' 只有一个字符
字符数组
1.字符串结束标志'\0'
2.n个字符串,占用n+1个字节
3.字符串输出标志符:%s
初始化:
2.char ab[]="asdfasdf";
char ac[20]={'a','b','c'};
3.字符数组利用循环逐个输入和输出
scanf("%c",&a[i]);
printf("%c",a[i]);
4.字符数组整体输入:gets(a);
字符数组整体输出:puts(a);输出后自动换行printf("%s\n",a);
字符串处理函数:
1引入头文件#include <string.h>
a.strlen(ab)检测字符串长度函数:(不包括结束标志的长度)zifufuxi2.c
#include <stdio.h>
#include <string.h>
main()
{
char ab[]="abcdefdf";
char ac='\101';
printf("%c",ac);//'A'
printf("\n%d",strlen(ab));//8
getchar();
}
b.字符串复制:(zifufuxi1.c)
strcpy(s1,s2);将字符串s2的内容复制到字符串s1中)
c.字符串比较:
strcmp(s1,s2);比较字符串s1和字符串s2内容的大小
s1,s2既可以是字符串常量,也可以是字符数组
对两个字符串从左至右依次比较对应的字符(ASCII码大小)直到遇到不同字符为止
若全部字符相同,则认为两字符串相等,否则以遇到的第一个不同字符的大小来决定两个字符串大小
若s1<s2,<0; 若s1>s2 >0; 若s1==s2,=0
两个字符串的比较不能通过比较运算符来实现,因为使用比较运算符实际上是比较两个字符串存储位置的先后,而不是比较它们的大小
zifufuxi3.c
典型题:
1.字符串逆序输出
2.字符串大小写转换输出+32 -32
3.字符串按对应小写输出 判断 +32
4.字符串按对应大写输出 判断 -32
5.字符串按字符大小从小到大排序
6.字符输入:getchar() getch()
//getch() 不回显函数,当用户按下某个字符时,函数自动读取,无需按回车
//所在头文件:conio.h 从控制台读取一个字符,但不显示在屏幕上
//int getchar()
//头文件:#include <stdio.h>
//用于从标准输入控制台读取字符,int整型
//函数的返回值为用户输入的第一个字符的ASCII码,若出错返回-1,且将用户输入的字符回显到屏幕。
//如果用户在按回车键之前输入了不只一个字符,其他字符会保留在键盘缓冲区中,等待后续getchar()调用读取。
//也就是说,后续的getchar()调用不会等待用户按键,而是直接读取缓冲区中的字符,直到缓冲区的字符读取完毕后,才等待用户按键。
#include <stdio.h>
#include <conio.h>
int main()
{
//下面三行代码:运行的结果是我输入一行以后,然后按回车,这一行的内容就会原封不动的显示出来,除了#号,结果中不会显示出#号
//输入时显示#,结果输出时没有#
// char ch;
// while((ch=getchar())!='#')
// putchar(ch);
//下面的三行代码:运行的结果是我输入一行以后,直到按#即结束,开始输出,并且没有#
//输入时没有#,输出时也没有#,#就是结束标志
// char ch;
// while((ch=getch())!='#')
// putchar(ch);
char bla;
bla=getchar();//输入sdf322423回车,只有s保存赋值给bla
printf("%c\n",bla);
bla=getch();//输入4,直接赋值给bla(只能输入一个字符)
printf("%c\n",bla);
//getchar();}
#统计字符不同类别的数量
#include <stdio.h>
main()
{
char zf;
int shu=0,dxzm=0,xxzm=0;
while((zf=getchar())!='\n')
{
if(zf>='0'&&zf<='9') shu++;
if(zf>='a'&&zf<='z') xxzm++;
if(zf>='A'&& zf<='Z') dxzm++;
}
printf("数字%d个,大写字母%d个,小写字母%d个",shu,dxzm,xxzm);
getchar();
}