今天开始学习字符串,学完以后最低要做到了解什么是字符串,以及字符串的一些应用方法,毕竟字符串还是很常见的.

简单的字符串"helloworld",这个字符串大家应该都很眼熟,学编程的第一站啊~

"helloworld"这就是一个字符串,注意S是大写的,'h'这样的是一个字符对应的数据类型名char,很多个字符组合在一起就是一个字符串了,注意字符串是用双引号(" ")引起来的哦,可不是'h''e''l''l''o'这样简单粗暴的组合在一起哦...

字符串与字符数组:

字符串:在C语言中没有专门的字符串变量,通常用一个字符数组来存放一个字符串.

字符数组:字符数组和字符串的区别是:字符串的末尾有一个空字符 ‘\0’[A1]


[A1]对应的ascii码值:0

字符串的初始化

定义并初始化一个字符串的方法:

char name[15]={ 'W', 'a', 'n', 'g', 'L', 'i', '\0'};

har name[15] = "WangLi";

char password[] = "012345678";

字符串的输出”%s”,最后的’\0’是不会输出的.

字符串I/0函数

char name[10];

gets(name);[A1]

puts(name);[A2]


[A1]从键盘上读入一个完整的行,存入字符数组name。并用空字符'\0'取代行尾的换行符'\n'。

[A2]把字符数组中的字符串输出到显示器。

示例:

//字符串
void testString()
{ char name[];
char address[];
char job[];
//scanf("%s",name); //使用scanf时不能输入空格,不然会截断.
//printf("%s",name);
printf("请输您的入姓名:\n");
gets(name);//获取用户输入的一行数据并将其保持到name中
printf("请输您的入地址:\n");
gets(address);//获取用户输入的一行数据并将其保持到name中
printf("请输入您的工作:\n");
gets(job);//获取用户输入的一行数据并将其保持到name中
printf("--------------------------------\n");
puts(name);//向显示器输出name的内容
puts(address);
puts(job);
}

示例2 统计字符串中空格的数量

void calcSpace(){
char str[];
int i=,count=;
printf("请输入一行字符串:\n");
gets(str);//获取用户输入的字符串
while(str[i]!='\0'){// '\0'代表字符串的结束
if(str[i]==' '){
count++;
}
i++;
}
printf("您输入的字符串中包含%d个空格\n",count);
}

字符串处理函数

与字符串有关的内置函数在头文件string.h中定义

要使用标准库字符串处理函数,程序前应该包含: #include <string.h>

下面是一些常用的字符串函数.

strlen(s):统计字符串的长度

strcpy(dest,src): 使用strcpy(dest,src)实现将src的字符串(源字符串)复制到dest(目标字符串);

示例:

void testString(){
char str[]="hello,zzsxt!";
char str2[];
//使用strlen(s)统计字符串的长度
int len = strlen(str);
printf("%s的长度为%d\n",str,len);
//使用strcpy(dest,src)实现将src的字符串(源字符串)复制到dest(目标字符串)
strcpy(str2,str);
printf("复制str到str2中,str2=%s\n",str2);
}

strcmp(str1,str2): 比较字符串str1和str2的大小(str1==str2返回值为0,str1>str2:返回正数 str1<str2:负数),不忽略大小写

strcmpi(str1,str2): 忽略大小写比较字符串str1和str2的大小(str1==str2返回值为0,str1>str2:返回正数 str1<str2:负数)

示例:

//简单用户登陆
void testLogin(){
char userName[],password[],code[];
printf("请输入用户名:\n");
gets(userName);//将用户输入的用户名赋值给userName
printf("请输入密码\n");
gets(password);
printf("请输入验证码\n");
gets(code);
//判断验证码是否正确:ZZSXT
// strcmpi(str1,str2):忽略大小写进行比较
if(strcmpi(code,"ZZSXT")==){
//判断用户名为zhangsan,密码为123456时登陆成功,
if((strcmp(userName,"zhangsan")==)&&(strcmp(password,""))==){
printf("登陆成功!\n");
}else{
printf("用户名或密码有误!\n");
}
}else{
printf("验证码有误!请重新输入\n");
}
}

strcat(dest, src):把字符串 src中的字符串连接到字符串 dest中字符串的后面

示例:

void testStrcat(){//字符串的拼接
char dest[]="zzsxt,";
char src[]="is very good!";
printf("连接前:\n");
printf("dest=%s\n",dest);
printf("src=%s\n",src);
strcat(dest,src);// 把字符串 src中的字符串连接到字符串 dest中字符串的后面
printf("连接后:\n");
printf("dest=%s\n",dest);
printf("src=%s\n",src);
}

字符指针: 在C语言中,可以将字符指针指向字符串,被指向的字符串可以是一个常量字符串,也可以是一个存储着字符串的字符数组

示例:

void  testStrPointer(){
char *p="wahaha,wahaha!";
int count=;
while(*p!='\0'){
if(*p=='a'){
count++;
}
p++;
}
printf("该字符串中a出现的次数共%d次\n",count);
}

View testStrPointer()

字符指针数组:一个数组中的各个元素都是字符指针

示例:

void testStrPointerArr()
{
//声明一个字符指针数组:包含的都是字符指针
/*
char *str1="zhangsan";
char *str2="lisi";
char *str3="wangwu";
char *names[]={*str1,*str2,*str3....};
*/
char *names[]={"zhangsan","lisi","wangwu","zhaoliu","tianqi","xinba"};
char *temp;//中间变量:字符指针变量
printf("交换前:names[2]=%s,names[3]=%s\n",names[],names[]);
temp=names[];
names[]=names[];
names[]=temp;
printf("交换前:names[2]=%s,names[3]=%s\n",names[],names[]);
}

示例:用户定义版字符串拷贝函数

 void mystrcpy(char dest[ ], char src[ ])
{
int i = ;
while(src[i] != '\0')
{
dest[i] = src[i];
i++;
}
dest[i] = '\0';
}

示例2: 用户定义版求字符串长度函数

 int mystrlen (char *s)
{
int n = ;
while (*s != '\0')
{
++s;
++n;
}
return n;
}

OK以上就是字符串部分的内容了,C语言的学习已经快要结束了,并不是不再坚持了,而是因为一开始学C的目的只是为了后面学JAVA打基础而已,而现在的学习深度据老师说已经足以支撑Java基础的部分了,所以C语言剩下的不多了,但是C语言确实挺有趣的,以后有机会我还是要好好学习一下的..

C语言学习第八章的更多相关文章

  1. 20165315 C语言学习情况与Java学习目标

    20165315 C语言学习情况与Java学习目标 一.出色技能的获取经验 我从小便是一个中规中矩的人,在很多方面都是让成绩尽量保持在前百分之二十到三十这个范围内,比如我比较擅长的唱歌和乒乓球,但也不 ...

  2. 20165333 学习基础和C语言学习基础

    说实话,我并没有什么技能比90%以上的人更好,非要拿一个出来的话,篮球勉强好一点吧.最初接触篮球是小学的时候跟着哥哥看他打球,哥哥的球技在同龄人中算是好的,每次看他各种突破过人,我都觉得特别潇洒帅气, ...

  3. C语言学习 第八次作业总结

    本次作业其实没有新的内容,主要就是复习上一次的一维数组的相关内容.冯老师布置了5道题目,其中涉及到一些比较简单的排序或者是查找的方法.因为数据很少,所以直接使用for循环遍历就可以了. 关于本次作业, ...

  4. C语言学习 第七次作业总结

    C语言学习 第七次作业总结 数组可以分为数组和多下标数组(在传统的国内C语言书本中,将其称为二/多维数组). 数组名称 在之前的课程中,大家应该都有印象,对于int a这样的定义,会为变量 a 声明一 ...

  5. 技能收获与C语言学习

    你有什么技能比大多人(超过90%以上)更好? 我会的东西很多,喜欢的东西太多,但是很遗憾广而不专,会而不精.学了很多东西我都是为了娱乐,因为以前我们那里过于强调学习,很多爱好也都被扼杀在摇篮里.我觉得 ...

  6. 一份关于Swift语言学习资源的整理文件

    一份关于Swift语言学习资源的整理文件     周银辉 在这里下载 https://github.com/ipader/SwiftGuide

  7. go语言学习笔记

    Go语言学习基本类型Bool 取值范围:true,false (不可以用数字代替)Int/uint 根据平台可能为32或64位int8/uint8 长度:1字节 取值范围-128~127/0~255b ...

  8. 20155206赵飞技能获取经验,C语言学习感想与对JAVA的学习目标

    自己较强的技能获取经验. 1:实话实说我自己是没有哪个技能可以超过90%的人的,只有自认为做的还可以的一些事情,例如打篮球,office软件的应用,一百米跑.至于其他方面就是很平庸了. 2:经验主要有 ...

  9. HTML语言学习笔记(会更新)

    # HTML语言学习笔记(会更新) 一个html文件是由一系列的元素和标签组成的. 标签: 1.<html></html> 表示该文件为超文本标记语言(HTML)编写的.成对出 ...

随机推荐

  1. 基于 Koa平台Node.js开发的KoaHub.js的输出json到页面代码

    koahub-body-res koahub body res Format koa's respond json. Installation $ npm install koahub-body-re ...

  2. 求m和n的最大公约数和最小公倍数

    题目:输入两个正整数m和n,求其最大公约数和最小公倍数. 做这道题时,特意去查看了一下什么是最大公约数和最小公倍数. 后来直接去看了求解的思想,相信到企业中不会要求你闭门造车,若已有先例,可以研究之后 ...

  3. @RequestParam--SpringMVC 注解系列文章(一)

    概述 RequestParam 注解是使用 SpringMVC 开发过程中,比较常用的一个注解,用于映射请求参数. 代码 package rex.springmvc.handlers; import ...

  4. 用C写一个web服务器(二) I/O多路复用之epoll

    .container { margin-right: auto; margin-left: auto; padding-left: 15px; padding-right: 15px } .conta ...

  5. Android 增加(键盘)按键

    以添加 camera按键为例(红色是需要添加的) 一.kernel键值定义 (1)键扫描码 ScanCode是由linux的Input驱动框架定义的整数类型,可参考input.h头文件,即geteve ...

  6. Linux MTD子系统 _从模型分析到Flash驱动模板

    MTD(Memory Technology Device)即常说的Flash等使用存储芯片的存储设备,MTD子系统对应的是块设备驱动框架中的设备驱动层,可以说,MTD就是针对Flash设备设计的标准化 ...

  7. java安装1335错误解决办法(亲测)

    心血来潮想了解一下java,结果一开始就碰到了让心"恶心"的1335错误. 废话不多说,直接看下面: 你可以先尝试在这个链接下载java.exe文件 http://www.orac ...

  8. iOS性能之其他

    本篇文章是个引用,因为这些技术我都只是研究过,但是并没有在项目中使用,也没有深入研究,所以只能当做一个笔记了 网络请求 现在大多数的网络请求都是使用的json格式(相信没有APP再使用XML格式了吧) ...

  9. 浩哥解析MyBatis源码(三)——Transaction事务模块

    原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/6634151.html 1.回顾 之前介绍了Environment环境类,这其实是一个单例类 ...

  10. 为什么要学Python

    人生苦短,我用python.在大学四年的本科学习中,Python是我接触过语法最简单,功能最为强大的语言,拥有众多第三方库的支持的语言.如果要选一门编程语言作为入门,建议使用Python.但是为了更加 ...