C语言学习 —— 字符串的学习(一)
这是本人在学习 C语言有关 字符串内容 时的相关笔记
由于本人技术有限,如有错误,还望指正
C语言中数据类型中只有 字符型(char),而 char型 变量一次只能存储一个字符,在日常工作中经常需要定义 字符串 ,所以使用 字符数组 来存储和调用字符数据。
1.字符数组的定义和使用
char ch[50];//定义一个长度为50的字符串数组
定义字符串时需要定义字符串的长度,但是如果在定义的同时对字符串进行赋值
则不需要定义长度,代码如下
char ch[] = "I love QIAN";
2.字符串的赋值
gets(b);
puts(b);
scanf( "%s" ,b );
puts(b);
for( i =0; i < 10; i ++)
{
scanf("%c",&b[i]);//注意这种方法没有输入最后的空字符,所以当输入字符小于定义的
//的长度时会出现乱码
}
puts(b);
3.字符数组的长度及在内存中的占用大小
函数: strlen (const char*) 测量字符串的长度,此长度不包括 空字符('\0')
函数: sizeof() 测量的是在数组所占内存的大小
char a[] = "abc";
char b[5] ;
gets( b );
printf("strlen a =%d,sizeof a =%d\nstrlen b =%d,sizeof b =%d ",strlen(a),sizeof(a),strlen(b),sizeof(b));
运行结果:
字符数组 a 所占的内存大小比字符串的长多多一位,多出的一位是系统自动增加的 空字符('\0')
此处还有个疑问没有找到答案,还望大神解答一下:http://q.cnblogs.com/q/62368/
4.字符的大小写转换
函数:strlwr(char *) 转换字符串内字母为小写
strupr(char *)转换字符串内字母为大写
这两个函数只针对 字符串 进行转换,若是对单个字母进行转换时可通过下列方法
char a;
a = getchar();
if( a >= 65 && a <= 90)//大写字母数值范围
a+=32;
else if( a >= 97 && a <= 122)//小写字母数值范围
a-=32;
putchar(a);//大小写字母间相隔32
putwchar(10);
5.字符串比较
函数:strcmp (const char*, const char*) 比较两个字符串,返回值 -1,0,1
char str1[10] = "abcd",str2[10] = "abcde";
int i,j,k;
i = strcmp(str1,str1);//相等
j = strcmp(str2,str1);//大于
k = strcmp(str1,str2);//小于
printf("字符串相等:%d\n字符串大于:%d\n字符串小于:%d\n",i,j,k);
这个函数只针对 字符串,字符间可以直接比较大小
6.字符串复制
函数:strcpy (char*, const char*) 将后一个字符串的内容复制到前一个字符串中
第一次使用这个函数时以为 会首先将 str1字符串 的内容清空,然后在复制过去
事实上只是用在 str2字符串 后面添上一个 空字符('\0'),str1字符串 内未被复制的内容依然存在
char str1[10] = "Chinese",str2[] = "China";
strcpy(str1,str2);
// 输出的内容 China
// 看似 strcpy 函数会清空 str1 中的值,然后执行复制
// 实际上 str1 中 只有前6个字符被 str2 替换(第6个是 '\0' ),其余的仍为 str1 的值
puts(str1);
printf("new \n");
str1[5] = 'e';//替换掉自动添加的 空字符
puts(str1);
运行结果:
函数:strncpy (char*, const char*,int) 将后一个字符串的前n个字符复制到前一个字符串中
这个函数复制是不会包含 空字符
char str1[10] = "abcdefh",str2[] = "China";
strncpy(str1,str2,2);// 复制时不包含 空字符
puts(str1);
运行结果:
7.字符串连接
函数:strcat (char*, const char*) 将后一个字符串的内容连接到前一个字符串
新的字符串会储存在 str1 中,所以要求 str1 应该足够大
char str1[30] = "Hubei of";
char str2[] = " China";
// 新的 字符串 会存储在 str1 中
strcat(str1,str2);
printf("%s\n%s\n",strcat(str1,str2),str1);
运行结果:
以上是我初步学习的体会,如有错误,还望指正
联系邮箱:handmail@qq.com
C语言学习 —— 字符串的学习(一)的更多相关文章
- .Net程序员之Python基础教程学习----字符串的使用 [Second Day]
在The FirstDay 里面学习了列表的元组的使用,今天开始学习字符串的使用.字符串的使用主要要掌握,字符串的格式化(C语言中我们应该都知道,Python和C语言差别不大),字符串的基本 ...
- NSString字符串类型-学习总结
1.字符串的创建 (1)创建常量字符串 NSString *str = @"This is a String"; //str是变量名 (2)创建空的字符串,给字符串赋值 NSStr ...
- Python3中的字符串函数学习总结
这篇文章主要介绍了Python3中的字符串函数学习总结,本文讲解了格式化类方法.查找 & 替换类方法.拆分 & 组合类方法等内容,需要的朋友可以参考下. Sequence Types ...
- BM和KMP字符串匹配算法学习
BM和KMP字符串匹配算法学习 分类: 研究与学习 字符串匹配BM(Boyer-Moore)算法学习心得 http://www.cnblogs.com/a180285/archive/2011/12/ ...
- C语言结构体的学习,以及gdb的调式
#include <stdio.h> #include <string.h> #define format "%d\n%s\n%f\n%f\n%f\n" t ...
- Python中字符串的学习
Python中字符串的学习 一.字符串的格式化输出 % 占位符 %s 字符串 %d integer %x 十六进制 integer %f float 指定长度 %5d 右对齐,不足左边补空格 %-5d ...
- 【机器学习与R语言】5-规则学习算法
目录 1.分类规则原理 1.1 1R单规则算法 1.2 RIPPER算法 2. 规则学习应用示例 1)收集数据 2)探索和准备数据 3)训练数据 4)评估性能 5)提高性能 6)选择决策树中的分类规则 ...
- 【机器学习与R语言】3-概率学习朴素贝叶斯(NB)
目录 1.理解朴素贝叶斯 1)基本概念 2)朴素贝叶斯算法 2.朴素贝斯分类应用 1)收集数据 2)探索和准备数据 3)训练模型 4)评估模型性能 5)提升模型性能 1.理解朴素贝叶斯 1)基本概念 ...
- 【机器学习与R语言】1-机器学习简介
目录 1.基本概念 2.选择机器学习算法 3.使用R进行机器学习 1.基本概念 机器学习:发明算法将数据转化为智能行为 数据挖掘 VS 机器学习:前者侧重寻找有价值的信息,后者侧重执行已知的任务.后者 ...
随机推荐
- VS2010 添加资源文件后,出现 “LNK1123: 转换到 COFF 期间失败: 文件无效或损坏”错误
1>LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏 解决方法: 一.1.点击“项目”-->“属性”-->“清单工具” 2.‘输入 ...
- mysql 的基础知识
这边博客,纯为了摘录 mysql 常用的一些操作,如果你已经懂了,可以忽略,谢谢. 最基本的mysql操作 1.查询mysql 的版本和当前时间信息 select version(),current_ ...
- jquery与ajax的应用
1.编写第一个Ajax的例子,先来看一下传统的JavaScript实现的ajax例子. 首先在前台页面中书写HTML代码. <input type="button" valu ...
- C++进程间通信(常用理解例子)-买票
#include "stdafx.h" #include <iostream>using namespace std; #include "windows.h ...
- iOS在Xcode6中添加空模板
1.在Xcode6.0以下版本找到空模板(路径与下方相同). 2.将空模板拖入路径:Macintosh HD ▸ 应用程序 ▸ Xcode(版本号).app ▸ Contents ▸ Develo ...
- Spring注释(转)
转自:http://www.ibm.com/developerworks/cn/java/j-lo-spring25-ioc/#ibm-pcon 概述 注释配置相对于 XML 配置具有很多的优势: 它 ...
- unity3d银联支付出现闪退
在接入银联SDK的unity3d的游戏中,点击银联支付会出现游戏总是出现闪退现象 ,后来网上有资料说 打开银联的jar包,将里面的res/drawable目录下的文件,拷贝到您的工程的drawable ...
- [转]Net Framework引路蜂地图开发示例
From:http://www.2cto.com/kf/201207/140421.html 引路蜂地图也提供对.Net Framework平台的支持,可以开发桌面地图应用,由于Mono C#的跨平台 ...
- mysql数据库学习(二)--表操作
一.表操作 以下内容都是自己学习的时候看过的一些知识,作为笔记记录一下吧,大部分都是所看文章的内容. 1.创建表 前面的基础篇笔记是相当于搭建了一个方便管理的文件夹树根,下面要学习的是一些关于表的知识 ...
- REST和JAX-RS相关知识介绍
REST REpresentational State Transfer:代表性状态传输.具象状态传输 REST定义了应该如何正确地使用Web标准,例如HTTP和URI.REST并非标准,而是一种开发 ...