专栏首页诸葛青云的专栏C语言奇淫技巧,字符串的三种表示方法,不会用不是合格的程序员
原创

C语言奇淫技巧,字符串的三种表示方法,不会用不是合格的程序员

1.在C语言中,是将字符串作为字符数组来处理的,字符串是逐个存放到数组元素中的

例如用一个一维的字符数组存放字符串"I am a boy.",如下代码:

char c[12] = {'I','a','m','a','b','o','y','.'};

这个字符串的实际长度是11,数组长度是12,实际工作中,人们关心的往往是字符串的有效长度而不是字符串的数组长度,例如要打印字符串,这是就要知道字符串的实际长度。平时常使用下面三种方式来测定字符串的实际长度:

小编给大家推荐一个学习氛围超好的地方,C/C++交流企鹅裙:【8.7.0+九.六.三+2.5.1】适合在校大学生,小白,想转行,想通过这个找工作的加入。裙里有大量学习资料,有大神解答交流问题,每晚都有免费的直播课程

(1)在串值后面加一个不计入长度的结束标记字符,比如''来表示串值的终结

初始化一个字符串的方法如下,在最后添加''

char str[] = {'I','a','m','h','a','p','p','y',''};

也可以直接使用字符串常量初始化字符数组(系统自动加上''),这种方法符合人们的习惯。

char str[] = "I am happy";

或者

char str[] = {"I am happy"};

注意:不能使用下面的赋值方式:

char str[20];

str = "I am happy";

但可以用字符指针指向这个字符串:

char *str;

str = "I love China";

(2)将实际串长度值保存在数组0的下标下

#define MAXSIZE 20 //数组的长度

typdef char String[MAXSIZE+1];

初始化字符串的方法:

String t;

StrAssign(t,"I am happy");

int StrAssign(String T,char *chars)

{

T[0] = strlen(chars); //下标为0存放数组长度

for(i=1;i<=strlen(chars);i++) //下标位置从1开始存放数据

{

T[i] = *(chars+i-1);

}

return 1;

}

(3)使用结构体类型(自定义类型)

#define MAXSIZE 20

typedef struct{

char ch[MAXSIZE];

int len;

}String;

其中:MAXSIZE表示串的最大长度,ch是存储字符串的一维数组,len是字符串的长度

初始化函数示例:

String t;

StrAssign(&t,"I am happy");

int StrAssign(String *t,char *chars)

{

int i;

if(strlen(chars)>MAXSIZE+1) //字符串的长度大于数组的长度,操作失败,返回0

return 0;

for(i=0;i<strlen(chars);i++)

{

t->ch[i] = *(chars+i);

}

t->len = strlen(chars); //数组的长度

return 1; //返回1,操作成功

}

说明:这里的StrAssign函数的参数t使用的是指针,是因为结构体变量做做形参,用法和普通变量一样属于值传递方式,在子函数中要给t赋值,所以输入的是t的指针。与之对比的是(2)子函数中T是数组,传入的是数组的首地址(改变形参也就改变了实参)。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • C语言算法设计之奇数魔方阵

    将1到n(为奇数)的数字排列在nxn的方阵上,且各行、各列与各对角线的和必须相同,如下所 示:

    诸葛青云
  • 简述在C语言中, “字符”与“字符串”之间的区别

    在C语言中,“字符”与“字符串”之间,是有区别的。这一篇文章中,我们将介绍一下,在C语言中的“字符”与“字符串”,它们之间的区别。

    诸葛青云
  • 手把手带你使用c++写《超级玛丽》小游戏

    吃鸡’模式火起来之后,市面上涌现出了大量的大逃杀游戏,载具版、僵尸版,还有魔幻、武侠、三国等各种题材。最近一个国外开发者另辟蹊径,把经典游戏《超级玛丽》改成了大...

    诸葛青云
  • Python3之命名关键字参数

    在*后面的参数都是命名关键字参数,传值的时候必须按照关键字参数进行传值,*args后面的参数也是命名关键字参数,例如此种形式:

    py3study
  • 数据类型和Json格式

    作者: 阮一峰 1. 前几天,我才知道有一种简化的数据交换格式,叫做yaml。 我翻了一遍它的文档,看懂的地方不多,但是有一句话令我茅塞顿开。 它说,从结构上看...

    wangxl
  • Python函数的参数

    定义函数的时候,我们把参数的名字和位置确定下来,函数的接口定义就完成了。对于函数的调用者来说,只需要知道传递正确的参数,以及函数就返回什么样的值就够了,函数内部...

    小破孩的梦想空间
  • 宝宝都能学会的python编程教程12:函数的参数

    Python的函数定义非常简单,也非常灵活。除了正常定义的必选参数外,还可以使用默认参数、可变参数和关键字参数,使得函数定义出来的接口,不但能处理复杂的参数,还...

    JKXQJ
  • 人人都能学会的python编程教程12:函数的参数

    Python的函数定义非常简单,也非常灵活。除了正常定义的必选参数外,还可以使用默认参数、可变参数和关键字参数,使得函数定义出来的接口,不但能处理复杂的参数,还...

    JKXQJ
  • 002.KVM环境部署

    木二
  • python中3个帮助函数help,di

    py3study

扫码关注云+社区

领取腾讯云代金券