当前位置:首页 » 编程语言 » c语言字符串数组定义规则
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言字符串数组定义规则

发布时间: 2023-02-08 19:57:35

c语言里字符串数组应该怎么定义

C语言并没有字符串这样的类型
是用字符数组存的。
于是 字符串数组 其实就是二维字符数组
比如
char s[10][100];
表示10个字符串, 每个最长100个字节。

⑵ c语言字符串和字符数组和字符串数组都是什么意思,怎么定义

char *str = "abc"就是字符串,char str[] = ['a','b','c']就是字符数组。

⑶ 字符数组的定义

在c语言中,没有专门的字符串变量,而是将字符串存入字符数组来处理。

即用一个一维数组来存放一个字符串,每个元素存放一个字符。

如:char c[5];

字符数组是数组的一个特殊情况,但它的定义方法与上述介绍的类似;引用方法可以与上述介绍的同,也有其独特的引用方法;由于字符型与整型是相互通用的,因此上面定义也可改为:int c[5]。

(3)c语言字符串数组定义规则扩展阅读

字符数组的初始化

按元素赋初值

如static char c[10]={'s','t','o','r','e'};

注意:static char c[10]; 则 c[0],c[1],...,c[9]初值均为'';

但若char c[10]; 则c[0],c[1],...,c[9]的值是未知的。

在c语言中,将字符串作为字符数组来处理,即用一个一维数组来存放一个字符串。如:c[10]存放字符串"store"。为了测定实际字符串长度,c语言规定了一个“字符串结束标志”,即‘’时,表示字符串结束。

⑷ c语言数组的定义

C语言支持一维数组和多维数组。如果一个数组的所有元素都不是数组,那么该数组称为一维数组。

在C语言中使用数组必须先进行定义,一维数组的定义方式为:类型说明符; 数组名 ;[常量表达式]。

其中,类型说明符是任一种基本数据类型或构造数据类型。数组名是用户定义的数组标识符,方括号中的常量表达式表示数据元素的个数,也称为数组的长度。例如:

int a[10]; /* 说明整型数组a,有10个元素 */

float b[10], c[20]; /* 说明实型数组b,有10个元素,实型数组c,有20个元素 */

char ch[20]; /* 说明字符数组ch,有20个元素 */

对于数组类型说明应注意以下几点:

1、数组的类型实际上是指数组元素的取值类型。对于同一个数组,其所有元素的数据类型都是相同的。

2、数组名的书写规则应符合标识符的书写规定。

3、数组名不能与其它变量名相同。例如:

int a;

float a[10];

是错误的。

4、方括号中常量表达式表示数组元素的个数,如a[5]表示数组a有5个元素。但是其下标从0开始计算。因此5个元素分别为a[0], a[1], a[2], a[3], a[4]。

5、不能在方括号中用变量来表示元素的个数,但是可以是符号常数或常量表达式。例如:

#define FD 5

// ...

int a[3+2],b[7+FD];

是合法的。但是下述说明方式是错误的。

int n=5;

int a[n];

6、允许在同一个类型说明中,说明多个数组和多个变量。例如:

int a,b,c,d,k1[10],k2[20];

(4)c语言字符串数组定义规则扩展阅读:

C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。

二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSI C,作为C语言最初的标准。[1]目前2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。

C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。

其编译器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。

⑸ c语言字符数组使用方法

c语言字符数组使用方法

导语:字符数组是一个存储字符的数组,而字符串是一个用双括号括起来的以'/0'结束的字符序列,下面就由我为大家介绍一下c语言字符数组使用方法,希望对大家有所帮助!

1、字符数组的定义与初始化

字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素。

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

即把10个字符分别赋给str[0]到str[9]10个元素

如果花括号中提供的字符个数大于数组长度,则按语法错误处理;若小于数组长度,则只将这些字符数组中前面那些元素,其余的元素自动定为空字符(即 '/0' )。

2、字符数组与字符串

在c语言中,将字符串作为字符数组来处理。(c++中不是)

在实际应用中人们关心的是有效字符串的长度而不是字符数组的长度,例如,定义一个字符数组长度为100,而实际有效字符只有40个,为了测定字符串的实际长度,C语言规定了一个“字符串结束标志”,以字符'/0'代表。如果有一个字符串,其中第10个字符为'/0',则此字符串的有效字符为9个。也就是说,在遇到第一个字符'/0'时,表示字符串结束,由它前面的字符组成字符串。

系统对字符串常量也自动加一个'/0'作为结束符。例如"C Program”共有9个字符,但在内存中占10个字节,最后一个字节'/0'是系统自动加上的。(通过sizeof()函数可验证)

有了结束标志'/0'后,字符数组的长度就显得不那么重要了,在程序中往往依靠检测'/0'的位置来判定字符串是否结束,而不是根据数组的`长度来决定字符串长度。当然,在定义字符数组时应估计实际字符串长度,保证数组长度始终大于字符串实际长度。(在实际字符串定义中,常常并不指定数组长度,如char str[ ])

说明:''代表ASCII码为0的字符,从ASCII码表中可以查到ASCII码为0的字符不是一个可以显示的字符,而是一个“空操作符”,即它什么也不干。用它来作为字符串结束标志不会产生附加的操作或增加有效字符,只起一个供辨别的标志。

对C语言处理字符串的方法由以上的了解后,再对字符数组初始化的方法补充一种方法――即可以用字符串常量来初始化字符数组:

char str[ ]={"I am happy"}; 可以省略花括号,如下所示

char str[ ]="I am happy";

注意:上述这种字符数组的整体赋值只能在字符数组初始化时使用,不能用于字符数组的赋值,字符数组的赋值只能对其元素一一赋值,下面的赋值方法是错误的

char str[ ];

str="I am happy";

不是用单个字符作为初值,而是用一个字符串(注意:字符串的两端是用双引号“”而不是单引号‘'括起来的)作为初值。显然,这种方法更直观方便。(注意:数组str的长度不是10,而是11,这点请务必记住,因为字符串常量"I am happy"的最后由系统自动加上一个'/0')

因此,上面的初始化与下面的初始化等价

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

而不与下面的等价

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

前者的长度是11,后者的长度是10.

说明:字符数组并不要求它的最后一个字符为'/0',甚至可以不包含'/0',向下面这样写是完全合法的。

char str[5]={'C','h','i','n','a'};

++++++++

可见,用两种不同方法初始化字符数组后得到的数组长度是不同的。

#include

void main(void)

{

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

char c2[]="I am happy";

int i1=sizeof(c1);

int i2=sizeof(c2);

printf("%d",i1);

printf("%d",i2);

}

结果:10 11

3、字符串的表示形式

在C语言中,可以用两种方法表示和存放字符串:

(1)用字符数组存放一个字符串

char str[ ]="I love China";

(2)用字符指针指向一个字符串

char* str="I love China";

对于第二种表示方法,有人认为str是一个字符串变量,以为定义时把字符串常量"I love China"直接赋给该字符串变量,这是不对的。

C语言对字符串常量是按字符数组处理的,在内存中开辟了一个字符数组用来存放字符串常量,程序在定义字符串指针变量str时只是把字符串首地址(即存放字符串的字符数组的首地址)赋给str。

两种表示方式的字符串输出都用

printf("%s",str);

%s表示输出一个字符串,给出字符指针变量名str(对于第一种表示方法,字符数组名即是字符数组的首地址,与第二种中的指针意义是一致的),则系统先输出它所指向的一个字符数据,然后自动使str自动加1,使之指向下一个字符...,如此,直到遇到字符串结束标识符 " /0 "。

4、对使用字符指针变量和字符数组两种方法表示字符串的讨论

虽然用字符数组和字符指针变量都能实现字符串的存储和运算,但它们二者之间是有区别的,不应混为一谈。

4.1、字符数组由若干个元素组成,每个元素放一个字符;而字符指针变量中存放的是地址(字符串/字符数组的首地址),绝不是将字符串放到字符指针变量中(是字符串首地址)

4.2、赋值方式:

对字符数组只能对各个元素赋值,不能用以下方法对字符数组赋值

char str[14];

str="I love China"; (但在字符数组初始化时可以,即char str[14]="I love China";)

而对字符指针变量,采用下面方法赋值:

char* a;

a="I love China";

或者是 char* a="I love China"; 都可以

4.3、对字符指针变量赋初值(初始化):

char* a="I love China";

等价于:

char* a;

a="I love China";

而对于字符数组的初始化

char str[14]="I love China";

不能等价于:

char str[14];

str="I love China"; (这种不是初始化,而是赋值,而对数组这样赋值是不对的)

4.4、如果定义了一个字符数组,那么它有确定的内存地址;而定义一个字符指针变量时,它并未指向某个确定的字符数据,并且可以多次赋值。

5、字符串处理函数

5.1

char *strcat(char *str1,const char *2 );

char *strcat(char *strDestination,const char *strSource );

功能:函数将字符串str2 连接到str1的末端,并返回指针str1

注:连接前两个字符串的后面都有一个' /0 ',连接时将字符串1后面的 ' /0 ‘去掉,只在新串最后保留一个 ' /0 ‘

5.2

char *strcpy(char *str1,const char *2 );

char *strcpy(char *strDestination,const char *strSource );

功能:复制字符串strSource中的字符到字符串strDestination,包括空值结束符。返回值为指针strDestination。

注:1、“字符数组1”必须写成数组名形式,“字符串2"可以是字符数组名,也可以是一个字符串常量

2、复制时连同字符串后面的 ' /0 ' 一起复制到数组1中

3、不能用赋值语句直接将一个字符串常量或者字符数组直接赋给一个字符数组(同普通变量数组是一样的),而只能用strcpy函数处理。

4、可以用strcpy函数将字符串2中的前若干个字符复制到字符数组1中去。

;

⑹ c语言如何定义字符数组

定义字符数组的方法,与定义整数数组或浮点数数组并无二致,都是完全一样的。例如,以下的语句,可以定义一个最多存放1000个字符的字符数组:
char s[1000];

⑺ 在c语言中 字符串如何去定义有几种定义方法

需要准备的材料分别有:电脑、C语言编译器。

1、首先,打开C语言编译器,新建一个初始.cpp文件,例如:test.cpp。

⑻ C语言怎么定义一个字符串组

如果想完成一组依赖关系的定义,最合适的应该是定义结构体数组,如:

structdata{
intnum;
charstring[100];
}st_data[]={//初始化,完成对应关系建立
{1,"one"},
{2,"two"},
{13,"thirteen"}
};
调用:
inti,n;
n=13;
for(i=0;i<n;i++)
if(st_data[i].num==n)
printf("%d-%s ",n,st_data[i].string);

如果num数据是连续的,则可以字符串数组或指针数组来实现,用下标作为索引值,如:

constchar*p_data[]={//初始化,完成对应关系建立指针数组适合固定值的初始化,一旦建立,不再改变
"","one","two","three","four","five"
};
或:
chara_data[20][10]={//初始化,完成对应关系建立字符串数组,适合动态修改其中的数据,或动态扩充对应关系数据
"","one","two","three","four","five"
};
调用:
inti;
i=1;
printf("%d-%s ",i,a_data[i]);
printf("%d-%s ",i,p_data[i]);