C语言学习 —— 字符串的学习(一)

这是本人在学习 C语言有关 字符串内容 时的相关笔记

由于本人技术有限,如有错误,还望指正


C语言中数据类型中只有 字符型(char),而 char型 变量一次只能存储一个字符,在日常工作中经常需要定义 字符串 ,所以使用 字符数组 来存储和调用字符数据。

1.字符数组的定义和使用

 
 

定义字符串时需要定义字符串的长度,但是如果在定义的同时对字符串进行赋值

则不需要定义长度,代码如下

 
 

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() 测量的是在数组所占内存的大小

 
  
 
  
 
  

字符数组 a 所占的内存大小比字符串的长多多一位,多出的一位是系统自动增加的 空字符('\0')

此处还有个疑问没有找到答案,还望大神解答一下:http://q.cnblogs.com/q/62368/

4.字符的大小写转换

函数:strlwr(char *) 转换字符串内字母为小写

        strupr(char *)转换字符串内字母为大写

这两个函数只针对 字符串 进行转换,若是对单个字母进行转换时可通过下列方法

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

转载于:https://www.cnblogs.com/Lleo/p/3735087.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值