美文网首页编程交流
字符串的 3种表示方法,不会用不是合格的程序员

字符串的 3种表示方法,不会用不是合格的程序员

作者: 6dd77184077e | 来源:发表于2019-05-13 16:14 被阅读8次

1.在C语言中,是将字符串作为字符数组来处理的,字符串是逐个存放到数组元素中的。例如用一个一维的字符数组存放字符串"I am a boy."。

如下代码:

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

这个字符串的实际长度是11,数组长度是12,实际工作中,人们关心的往往是字符串的有效长度而不是字符串的数组长度,例如要打印字符串,这是就要知道字符串的实际长度。

平时常使用下面三种方式来测定字符串的实际长度:

(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是数组,传入的是数组的首地址(改变形参也就改变了实参)。

相关文章

  • 字符串的 3种表示方法,不会用不是合格的程序员

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

  • Kotlin(4):字符串

    字符串用 String 类型表示,字符串是不可变的。 字符串表示方法 使用"或者'''表示字符串 字符串访问 字符...

  • ES6 学习笔记(3) 字符串扩展

    1. 字符串的Unicode表示方法 javaScript允许采用\uxxxx形式表示字符串, xxxx表示字符的...

  • ES6最新特性汇总

    let,const代替var 模板字面量 作用:连接字符串如,旧的表示方法: ES6表示方法:使用`字符串${变量...

  • python中的单,双和三引号字符串

    python 中的字符串可以有多种表示方法:单引号字符串 1. str = '字符串' 单引号表示普通字符串 双引...

  • Flutter学习:语法

    字符串的差异 dart中字符串的表示方法有很多: raw string,在前几种表示方式之前加上r即可。 字符串拼...

  • 走进 .Net 单元测试

    走进 .Net 单元测试 Intro “不会写单元测试的程序员不是合格的程序员,不写单元测试的程序员不是优秀程序员...

  • iOS - 单元测试

    简单使用单元测试 对方法引用AFN框架的单元测试不写单元测试的程序员是不合格的,为了让自己成为一名合格的程序员,学...

  • iOS - 单元测试

    简单使用单元测试 对方法引用AFN框架的单元测试 不写单元测试的程序员是不合格的,为了让自己成为一名合格的程序员,...

  • iOS - 单元测试

    简单使用单元测试 对方法引用AFN框架的单元测试 不写单元测试的程序员是不合格的,为了让自己成为一名合格的程序员,...

网友评论

    本文标题:字符串的 3种表示方法,不会用不是合格的程序员

    本文链接:https://www.haomeiwen.com/subject/hskraqtx.html