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);
 
运行结果:


以上是我初步学习的体会,如有错误,还望指正

联系邮箱:[email protected]

C语言学习 —— 字符串的学习(一),布布扣,bubuko.com

时间: 2024-12-13 02:45:48

C语言学习 —— 字符串的学习(一)的相关文章

互联网世界中的C语言——我的golang学习笔记:1(基础语法快速过)

前言 学习任何知识都会有一个学习背景 最近,我们团队乃至我司整个云服务,上go的呼声越来越高!新服务已经开始用go开发,部分现有Java版的服务重构为go也只是时间问题而已,故相关技术积累势在必行!在云网络的分布式服务乃至在一切高并发,分布式后台服务中,golang都有着很大的优势. 据我对国内互联网行业的实际考察,了解,目前国内主流互联网公司都在积极投入go的怀抱…… 青云更是全栈使用了go…… 还有火的一塌糊涂的docker. 它为云而生. 它为并发而生. 还有go的安全.简洁.高效 有良好

如何输出格式化的字符串(学习笔记四)

如何输出格式化的字符串(学习笔记四) 我们经常会输出类似 '亲爱的xxx你好!你xx月的话费是xx,余额是xx' 之类的字符串,而xxx的内容都是根据变量变化的,所以,需要一种简便的格式化字符串的方式. 在Python中,采用的格式化方式和C语言是一致的,用 % 实现,举例如下: >>> 'Hello, %s' % ('world') 'Hello, world' 截图如下: 注: (1)红线上的百分号,两边可有空格也可无: (2)对于只有一个变量的情况,我们可以将'world'外的括号

NSString字符串类型-学习总结

1.字符串的创建 (1)创建常量字符串 NSString *str = @"This is a String"; //str是变量名 (2)创建空的字符串,给字符串赋值 NSString *str = [NSString alloc] init]; str = @"科比 布莱恩特"; //直接赋值 (3)花样赋值 <1>使用初始化方法:initWithFormat:根据一定的字符串格式来初始化字符串对象,将格式串中的内容写入字符串对象空间内 NSStri

.Net程序员之Python基础教程学习----字符串的使用 [Second Day]

     在The FirstDay 里面学习了列表的元组的使用,今天开始学习字符串的使用.字符串的使用主要要掌握,字符串的格式化(C语言中我们应该都知道,Python和C语言差别不大),字符串的基本操作(Join,Split,Replace等和.net里面的也有很多相似点) 一.字符串的基本操作     1.字符串格式化认识: 字符串的格式化用%隔开与C语言一样.赋值也是用%(val1,val2)来传递,其实就是用元组来传递格式化数据. Note: values元素的个数以及格式必须与格式化字

黑马程序员—C语言基础语法的学习

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 以下为自己的学习总结与学习笔记,可能有不全面不到位的地方,也欢迎大家一起分享指正. C语言是世界上最流行.使用最广泛的高级程序设计语言之一,其主要的用途包括 1.编写系统软件.图形处理.单片机程序.嵌入式系统开发 2.编写游戏外挂 3.编写android程序 4.编写iOS程序 任何一个C语言的程序都是由一个或者多个程序段组成的,而这些有着自己功能的程序段就是函数了,说到函数,就不得不提mai

[易语言]连接ACCESS数据库学习

一.支持库配置 工具-支持库配置-数据库操作支持库 二.添加控件 启动窗口添加控件(数据库连接/记录集/超级列表框) 三.数据库连接 数据库连接1.连接Access ("数据库文件路径", "数据库密码") 例:数据库连接1.连接Access (取运行目录 () + "H:\m.mdb", "") 四.定义变量 .局部变量 索引, 整数型 .局部变量 用户ID, 整数型 .局部变量 日期时间, 文本型 五.例子 .支持库 eD

c语言到汇编的学习

[内存结构] C程序通过编译-汇编-连接,最后到可执行文件.载入内存有这几个部分: text:正文段,存放的是可执行的机器码段 data:存放初始化之后的全局变量和静态变量 bbs:存放未初始化的静态变量和全局变量 heap:堆,由程序员自己分配和释放,程序结束时,操作系统也会释放. stack: 栈,编译器自动分配,存放函数的参数,局部变量 下图是典型的内存布局图 #include <stdio.h> #include <stdlib.h> void foo(int x){pri

R语言——绘图函数深入学习

利用R自带数据集 通过data()函数可以查看R自带数据集. > data() 返回以下结果,每一条记录都是一个数据,键入相应的数据名称可以查看具体信息. Data sets in package ¡®datasets¡¯: AirPassengers Monthly Airline Passenger Numbers 1949-1960 BJsales Sales Data with Leading Indicator BJsales.lead (BJsales) Sales Data wit

python学习---字符串

单引号,双引号,三引号,原型字符串几种形式 1.创建字符串:单引号,双引号,str()几种创建方式 2.访问子串:切片方式 3.修改或者说更新字符串:“+”运算,给字符串内容增加一个长度的字符串:重新赋值方式: 4.删除子串:切片做“+”运算(aString = aString[:3] + aString[4:]),del语句删除字符串,或者给字符串赋值空(“”) 5.对字符串应用成员操作符in或者 not in 返回True 或者False 6.编译时字符串连接,上面的语法在运行时字符串连接的