C语言程序设计教程_第九章:字符串_笔记整理

第九章 字符串【★】

9.1 登陆系统

例1:编写程序模拟系统登陆,验证输入的用户名和密码是否正确

#include <stdio.h>
#include <string.h>
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;
}

9.2 文本处理

①字符串是一个用双引号括起来的一’\0’结束的字符序列

②字符串在内存存放时自动在最后加上一个ASCII码值未0的NULL字符作为字符串结束标志,NULL字符用八进制转义字符就是’\0’,所以字符串"XYZ"实际上占用了4个字节的内存空间

③如果要在字符串常量中表示双引号本身,就需要用转义字符"

例2:显示字符串常量占用的内存空间

#include <stdio.h>
int main(void)
{
	printf("sizeof(\"123\")=%u\n",sizeof("123"));
	printf("sizeof(\"XY\\tZ\")=%u\n",sizeof("XY\tZ"));
	printf("sizeof(\"abc\\0ade\")=%u\n",sizeof("abc\0def"));
	return 0;
}

例3:保存字符串的数组

#include <stdio.h>
int main(void)
{
	char str[4];
	str[0]='X';
	str[1]='Y';
	str[2]='Z';
	str[3]='\0';
	printf("%s",str);	
}

9.3 必备知识

1 字符数组和字符串

字符数组的定义和初始化

①如果字符数组没有\0,则数组就不能当作字符串来处理

②还可以使用字符串常量来初始化字符数组

char str[]={“CHINA”};//这样会自动添加\0

char str[]=“CHINA”;//也可以直接用双引号

注意事项:

①数组的长度必须比字符串的元素个数至少多1,用以存放字符串结束标志

②用字符串初始化字符数组时,可以默认数组长度的定义

③数组名是地址常量,不能将字符串直接赋值给数组名

④字符串到第一个\0结束

字符数组的输入输出【重要 这些例子记住最重要】

①单个字符输入输出

char ch;
scanf("%c",&ch);
printf("%c",ch);

②字符串的整体输入输出

char str[81];
scanf("%s",&str);

例4:键盘输入人名

#include <stdio.h>
int main(void)
{
	char name[10];
	printf("输入姓名:");
	scanf("%s",name);
	printf("Hello %s!\n",name);
	return 0;
}

2 字符串输入输出函数

单个字符的输入输出函数
char ch;
ch=getchar();//读取字符串
ch=getch();//读取字符
putchar(ch);//字符输出函数
字符串的输入输出函数
char name[10];
gets(name);//字符串输入
fgets(name,sizeof(name),stdin);//限制输入字符串的长度
puts(str);//字符串输出

3 字符串处理函数

#include <string.h>
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码大小

4 字符串转换函数

#include <stdlib.h>
int atoi(str1);//字符串转化为int
long atol(str1);//字符串转化为long
double atof(str1);//字符串转化为double

5 字符处理函数

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是否为可打印字符,除空格
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值