例1:编写程序模拟系统登陆,验证输入的用户名和密码是否正确
#include9.2 文本处理#include int main(void) { char username[100]; char passward[100]; printf("输入用户名和秘密"); printf("用户名:"); scanf("%s",username); printf("密码:"); scanf("%s",passward); if(strcmp(username,"zhangsan")==0 && strcmp(passward,"123")==0) { printf("登录成功!"); } else { printf("登陆失败!"); } return 0; }
①字符串是一个用双引号括起来的一’ ’结束的字符序列
②字符串在内存存放时自动在最后加上一个ASCII码值未0的NULL字符作为字符串结束标志,NULL字符用八进制转义字符就是’ ’,所以字符串"XYZ"实际上占用了4个字节的内存空间
③如果要在字符串常量中表示双引号本身,就需要用转义字符"
例2:显示字符串常量占用的内存空间
#includeint main(void) { printf("sizeof("123")=%un",sizeof("123")); printf("sizeof("XY\tZ")=%un",sizeof("XYtZ")); printf("sizeof("abc\0ade")=%un",sizeof("abc def")); return 0; }
例3:保存字符串的数组
#include9.3 必备知识 1 字符数组和字符串 字符数组的定义和初始化int main(void) { char str[4]; str[0]='X'; str[1]='Y'; str[2]='Z'; str[3]=' '; printf("%s",str); }
①如果字符数组没有 ,则数组就不能当作字符串来处理
②还可以使用字符串常量来初始化字符数组
char str[]={“CHINA”};//这样会自动添加
char str[]=“CHINA”;//也可以直接用双引号
注意事项:
①数组的长度必须比字符串的元素个数至少多1,用以存放字符串结束标志
②用字符串初始化字符数组时,可以默认数组长度的定义
③数组名是地址常量,不能将字符串直接赋值给数组名
④字符串到第一个 结束
字符数组的输入输出【重要 这些例子记住最重要】①单个字符输入输出
char ch;
scanf("%c",&ch);
printf("%c",ch);
②字符串的整体输入输出
char str[81];
scanf("%s",&str);
例4:键盘输入人名
#include2 字符串输入输出函数 单个字符的输入输出函数int main(void) { char name[10]; printf("输入姓名:"); scanf("%s",name); printf("Hello %s!n",name); return 0; }
char ch; ch=getchar();//读取字符串 ch=getch();//读取字符 putchar(ch);//字符输出函数字符串的输入输出函数
char name[10]; gets(name);//字符串输入 fgets(name,sizeof(name),stdin);//限制输入字符串的长度 puts(str);//字符串输出3 字符串处理函数
#include4 字符串转换函数int strlen(str1);//返回字符串长度 strcpy(char str1,char str2);//第二个复制到第一个 strncpy(char str1,char str2,int maxlen);//只复制前maxlen个 strcat(char str1,char str2);//后面接上前面 int strcmp(str1,str2);//依次比较ASCII码大小
#include5 字符处理函数int atoi(str1);//字符串转化为int long atol(str1);//字符串转化为long double atof(str1);//字符串转化为double
int isdigit(int c);//是否阿拉伯数字 int islower(int c);//是否小写字母 int isupper(int c);//是否大写字母 int isalpha(int c);//是否字母 int isalnum(int c);//是否数字 int tolower(int c);//如果大写字符,转化成小写字符后返回,否则返回本来的 int toupper(int c);//如果小写字母,转化成大写字母后返回,否则返回本来的 int isspace(int c);//是不是空白字符,包括空格、换行符、回车符、水平制表、垂直指标、换页 int iscntrl(int c);//是不是ASCII控制码,也就是判断c的范围是否在0-30之间 int isprint(int c);//c是否为可打印字符,包括空格在内 int isgraph(int c);//c是否为可打印字符,除空格



