C语言中字符串的三种表示方法

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

char c[12] = {'I','a','m','a','b','o','y','.'};
这个字符串的实际长度是11,数组长度是12,实际工作中,人们关心的往往是字符串的有效长度而不是字符串的数组长度,例如要打印字符串,这是就要知道字符串的实际长度。平时常使用下面三种方式来测定字符串的实际长度:

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

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

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

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

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
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值