-
2021-05-19 11:02:32
一、用一维字符数组存放字符串
1、C语言对字符串的约定
字符串是借助于字符型一维数组来存放的,并规定以字符‘\0’作为字符串的结束标志,’\0’作为标志占用存储空间,但不计入串的实际常量
2、C语言中表示字符串常量的约定
虽然c语言中没有字符串数据类型,但却允许有‘字符窜常量,字符串常量是由双引号括起来的,在表示字符串常量时不需要人为在其末尾加‘\0’.
3、C语言字符串常量给出的是地址值
每个字符串在内存中占有一段连续的存储空间,这些连续的存储空间实际上就是字符型一维数组,不同的字符串在内存中占有不同的存储空间,也就是在C语言中,字符串常量被隐含处理成为以‘\0’结尾的无名字符型一维数组。
若有一下定义:
char *sp,s[10];
则以下赋值是不合法的
s=“hello”;
因为s相当于一维数组的首地址,是一个不可重新赋值的数组名,因此赋值不合法。
而以下赋值是合法的
Sp=“hello”;
这个语句并不是把字符串的内容收入Sp中而只是把字符串中在所占的首地址赋予了char类型的指针变量Sp,指针变量Sp指向该字符串.
4、字符数组与字符串的区别
字符数组的每个元素可存放一个字符,但它并不限定最后一个字符应该是什么,而字符串则要求最后一个必须是‘\0’作为结束标识,在字符数组中可以存放字符串,但不能通过赋值语句将字符串常量或其他字符数组中的字符串直接赋值给字符串常量
二、通过赋初值的方式给一维字符数组赋字符串
1、用给一般数组赋初值的相同方式给一维字符组赋初值
char str[10]={‘s’,‘t’,‘r’,‘i’,‘i’,‘n’,‘j’,’\0’}
字符数组str共有10个元素,但str作为字符串,其长度为7,虽然最后一个字符是‘\0’,但它并不是结束标识因为系统会自动的给其分配一个结束标识。
2、在赋值时直接赋字符串常量
char str[10]={“string”};
习惯上省略花括号
char str[10]=“string!”(这种方式会自动给字符串的末尾添加结束标识,但需要注意的是字符串数组的长度一定要比赋值的长度多一个)
三、在C程序执行中给一维字符数组赋字符串
1、不可以用赋值语句给字符数组整体赋一串字符
当做字符串变量是用的字符数组,不能由赋值语句直接赋字符串常量
如:
char mark[10];
mark=“C Program”;
以上赋值时不允许的
再如:
char str[10]=“computer”,str[10];
Str2=str1;
2、给数组元素逐个赋值赋值,最后为加入串结束标志
更多相关内容 -
php二维数组转成字符串示例
2021-01-20 01:26:00//可以用implode将一维数组转换为用逗号连接的字符串 $temp[] = $v; } $t=””; foreach($temp as $v){ $t.=”‘”.$v.”‘”.”,”; } $t=substr($t,0,-1); return $t;} 您可能感兴趣的文章:探讨php中... -
二维字符数组与字符串数组的使用
2020-03-20 17:34:15一维字符数组的定义形式如下: <存储类型>char<数组名>[<常量表达式>]={<初始值>}; 二维字符数组定义的形式是: <存储类型>char<数组名>[<常量表达式e1>] [<常量...二维字符数组与字符串数组的使用
一维字符数组的定义形式如下:
<存储类型> char <数组名>[<常量表达式>]={<初始值>};
二维字符数组定义的形式是:
<存储类型> char <数组名>[<常量表达式e1>] [<常量表达式e2>]={<初始值>};
字符串数组定义的形式是:
<存储类型> string <数组名>[<常量表达式e1>] ={<初始值>};
二维字符数组定义的数组元素个数为:e1*e2。同数值数组一样,字符数组的每一维元素的下标都是从0开始。
例如:
char aa[8];定义了长为8的一维字符数组aa。
char bb[4][5];定义了4*5的二维字符数组bb。
string cc[3];定义了含3个字符串的一维数组cc。
关于字符数组的初始化有如下两种方式:
(1) 用字符常量初始化数组
例如:
char ch[5]={'a','b','c','d','\0'};
或者:char ch[ ]={'a','b','c','d','\0'}; /*可以缺省数组定义长度,但不能少结尾符*/
char st[3][6]={{'c','h','i','n','a','\0' },{'j','a','p','a','n','\0'},{'k','o','r','e','a','\0'}};
或者:
char st[ ][6]={{'c','h','i','n','a','\0' },{'j','a','p','a','n','\0'},{'k','o','r','e','a','\0'}};
/*可以缺省行下标,但不能缺省列下标*/
(2) 用字符串常量初始化数组
例如:
char ch[6]={"abcd"};
例如:
char st[3][6]={"china","japan","korea"};
或者:
char st[ ][6]={"china" ,"japan","korea"};
/*可以缺省行下标,但不能缺省列下标*/
例如:
string st[]={"china","japan","korea"};
以下两段程序输出结果一样
// 二维字符数组
char a[3][6]={"Tread","Micro","Soft"};for(int i=0;i<3;i++) {for(int j=0;j<6;j++)cout<<a[i][j];cout<<endl; }// 字符串数组string b[]={"Tread","Micro","Soft"};for(i=0;i<3;i++)cout<<b[i]<<endl; -
C语言总结(一维数组、二维数组、字符数组和字符串)
2019-01-23 20:03:27C语言总结第七章、数组一维数组一维数组的定义一维数组的引用一维数组的初始化程序举例二维数组及多维数组二维数组的定义二维数组元素的引用二维数组元素的初始化程序举例字符数组和字符串字符数组 第七章、数组 ...第七章、数组
数组是构造数据类型之一
- 数组: 有序数据的集合,用数组名标识
- 元素: 属同一数据类型,用数组名和下标确定
一维数组
一维数组的定义
定义方式:
例: int a[6]
一维数组的引用
1、数组必须先定义,后使用。
2、只能逐个引用数组元素,不能一次引用整个数组。
3、数组元素表示形式: 数组名[下标] ,下标可以是常量或整型表达式
。一维数组的初始化
初始化方式:
说明:
1、数组不初始化,其元素值为随机数。
2、对static数组元素不赋初值,系统会自动赋以0值。
3、只给部分数组元素赋初值。
4、当全部数组元素赋初值时,可不指定数组长度。
程序举例
例1: 读10个整数存入数组,找出其中最大值和最小值
/*示例1*/ #include <stdio.h> #define SIZE 10 main() { int x[SIZE],i,max,min; printf("Enter 10 integers:\n"); for(i=0;i<SIZE;i++) { printf("%d:",i+1); scanf("%d",&x[i]); } max=min=x[0]; for(i=1;i<SIZE;i++) { if(max<x[i]) max=x[i]; if(min>x[i]) min=x[i]; } printf("Maximum value is %d\n",max); printf("Minimum value is %d\n",min); }
例2: 用数组求Fibonacci数列前20个数
/*示例2*/ #include <stdio.h> main() { int i; int f[20]={1,1}; for(i=2;i<20;i++) f[i]=f[i-2]+f[i-1]; for(i=0;i<20;i++) { if(i%5==0) printf("\n"); printf("%12d",f[i]); } }
例3: 用冒泡法对10个数排序
/*示例3*/ #include <stdio.h> main() { int a[11],i,j,t; printf("Input 10 numbers:\n"); for(i=1;i<11;i++) scanf("%d",&a[i]); printf("\n"); for(j=1;j<=9;j++) for(i=1;i<=10-j;i++) if(a[i]>a[i+1]) {t=a[i]; a[i]=a[i+1]; a[i+1]=t;} printf("The sorted numbers:\n"); for(i=1;i<11;i++) printf("%d ",a[i]); }
例4: 用简单选择法对10个数排序
/*示例4*/ #include <stdio.h> main() { int a[11],i,j,k,x; printf("Input 10 numbers:\n"); for(i=1;i<11;i++) scanf("%d",&a[i]); printf("\n"); for(i=1;i<10;i++) { k=i; for(j=i+1;j<=10;j++) if(a[j]<a[k]) k=j; if(i!=k) { x=a[i]; a[i]=a[k]; a[k]=x;} } printf("The sorted numbers:\n"); for(i=1;i<11;i++) printf("%d ",a[i]); }
二维数组及多维数组
二维数组的定义
定义方式:
数组元素的存放顺序
1、原因: 内存是一维的
2、二维数组: 按行序优先
3、多维数组: 最右下标变化最快
数组a[m][n],m行n列,共m*n个元素
这些元素占用m*n个单元,每个单元的大小取决于
元素的类型。任意元素a[i][j]在数组中的位置计算公式为:
i×n+j (从0开始)
a——数组的起始地址;a[0]——0行0列元素的地址。
二维数组元素的引用
形式: 数组名[下标][下标]
二维数组元素的初始化
1、分行初始化
2、按元素排列顺序初始化程序举例
例1:将二维数组行列元素互换,存到另一个数组中
/*示例1*/ #include <stdio.h> main() { int a[2][3]={{1,2,3},{4,5,6}}; int b[3][2],i,j; printf("array a:\n"); for(i=0;i<=1;i++) { for(j=0;j<=2;j++) { printf("%5d",a[i][j]); b[j][i]=a[i][j]; } printf("\n"); } printf("array b:\n"); for(i=0;i<=2;i++) { for(j=0;j<=1;j++) printf("%5d",b[i][j]); printf("\n"); } }
例2:求二维数组中最大元素值及其行列号
/*示例2*/ #include <stdio.h> main() { int a[3][4]={{1,2,3,4}, {9,8,7,6}, {-10,10,-5,2}}; int i,j,row=0,colum=0,max; max=a[0][0]; for(i=0;i<=2;i++) for(j=0;j<=3;j++) if(a[i][j]>max) { max=a[i][j]; row=i; colum=j; } printf("max=%d,row=%d,\colum=%d\n",max,row,colum); }
例3:分别求n阶方阵两条对角线上的元素之和
/*示例3*/ #define N 3 main() { int i,j,a[N][N]; int sum1=0,sum2=0; for(i=0;i<N;i++) for(j=0;j<N;j++) scanf(“%d”,&a[i][j]); for(i=0;i<N;i++) for(j=0;j<N;j++) if(i==j) sum1+=a[i][j]; for(i=0;i<N;i++) for(j=N-1;j>=0;j--) if((i+j)==N-1) sum2+=a[i][j]; printf(“sum1=%d,sum2=%d\n”,sum1,sum2); }
字符数组和字符串
字符数组
定义 : 每个元素存一个字符,主要用来对字符串操作。
字符数组的初始化:1、逐个字符赋值
2、用字符串常量字符数组的引用:
字符串
字符串及其结束标志
(1)、无字符串变量,用字符数组处理字符串。
(2)、字符串结束标志:‘\0’。
字符串的输入输出
输入:- 用scanf函数
(1).输入单个字符:%c 需用循环语句
(2).输入字符串:%s scanf(“%s”,str); - 用gets函数:gets(str);
输出:
- 用printf函数
(1).输出单个字符:%c 需用循环语句
(2).输出字符串:%s printf(“%s”,str); - 用puts函数:puts(str);
常用的字符串处理函数: 加粗样式包含在头文件 string.h
字符串输出函数puts
格式: puts(字符数组)
功能: 向显示器输出字符串(输出完,换行)
说明: 字符数组必须以‘\0’结束字符串输入函数gets
格式: gets(字符数组)
功能: 从键盘输入一以回车结束的字符串放入字符数组中,并自动加‘\0’
说明: 输入串长度应小于字符数组维数字符串连接函数strcat
格式: strcat(字符数组1,字符数组2)
功能: 把字符数组2连到字符数组1后面
返值: 返回字符数组1的首地址
说明:
1、字符数组1必须足够大
2、连接前,两串均以‘\0’结束;连接后,串1的‘\0’取消, 新串最后加‘\0’字符串拷贝函数strcpy
格式: strcpy(字符数组1,字符串2)
功能: 将字符串2,拷贝到字符数组1中去
返值: 返回字符数组1的首地址
说明:
1、字符数组1必须足够大
2、拷贝时‘\0’一同拷贝
3、不能使用赋值语句为一个字符数组赋值
字符串比较函数strcmp
格式: strcmp(字符串1,字符串2)
功能: 比较两个字符串
比较规则: 对两串从左向右逐个字符比较(ASCII码),直到遇到不同字符或‘\0’为止
返值: 返回int型整数,
a. 若字符串1< 字符串2, 返回负整数
b. 若字符串1> 字符串2, 返回正整数
c. 若字符串1== 字符串2, 返回零
说明: 字符串比较不能用“==”,必须用strcmp字符串比较函数strcmp
字符串长度函数strlen
格式:strlen(字符数组)
功能:计算字符串长度
返值:返回字符串实际长度,不包括‘\0’在内
-
一维字符串数组转化二维其他类型数组
2020-10-10 19:32:19一维字符串数组转二维整型数组[例如是3列的二维数组] public class test01 { public static void main(String[] args) { // TODO Auto-generated method stub String[] str = {"1","2","3","4","5","6","7",...一维字符串数组转二维整型数组[例如是3列的二维数组]
public class test01 { public static void main(String[] args) { // TODO Auto-generated method stub String[] str = {"1","2","3","4","5","6","7","8","9"}; System.out.println(str.length); int spArray[][] = new int[str.length/3][3]; int i = 0; for (String data : str) { spArray[(i-(i%3))/3][i%3] = Integer.parseInt(data); i++; } for (int[] is : spArray) { for (int is2 : is) { System.out.printf("%d\t",is2); } System.out.println(); } } }
注意:
字符串的长度必须是所分列数的整数倍, 如例子中 一维字符串的长度是9, 二维数组的列数为3, 9即为3的倍数
-
python中字符串变二维数组的实例讲解
2020-09-20 16:01:33下面小编就为大家分享一篇python中字符串变二维数组的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 -
二维数组赋值字符串 c 语言 二维字符串数组赋值问题
2021-05-19 17:48:52C语言中二维字符数组应该怎样赋值?... //定义了一个3行10列的二维字符数组c 由于该二维数组的每一行 c[0]、c[1]、c[2] 均是含有 10 个元素的一维字符数组。1.用一个循环语句就可以了。例如: char *a[3]={"1","23",... -
二维数组·字符数组·与字符串
2021-11-10 18:56:30二维数组 一般形式 类型名 数组名 [常量表达式1][常量表达式2]; int a[3][4] 第一列 第二列 第三列 第四列 第0行 a[0][0] a[0][1] a[0][2] a[0][3] 第1行 a[1][0] ... -
二维字符数组与字符串数组
2019-07-22 10:46:00首先,对于一维字符数组:char a[N]={}; 其实最后代表的也是一个字符串 字符数组的初始化有两种方式: 但其实使用字符常量初始化数组的时候,可以不加上这个 '\0',而使用字符串初始化字符数组的时候,是自动... -
PHP实现多维数组转字符串和多维数组转一维数组的方法
2020-12-19 14:35:39本文实例讲述了PHP实现多维数组转字符串和多维数组转一维数组的方法。分享给大家供大家参考。具体实现方法如下: /** * @method 多维数组转字符串 * @param type $array * @return type $srting * @author ... -
java代码-使用java解决从字符串中解析二维数组的源代码
2022-04-04 18:32:35java代码-使用java解决从字符串中解析二维数组的源代码 ——学习参考资料:仅用于个人学习使用! -
【C语言】动态分配二维字符串数组
2021-10-26 22:21:31动态分配一个二维字符串数组 (1) 分配可能不连续的内存 申请 char**pps8Output = (char **) malloc(n * sizeof(char *)); 对于pps8Output而言,它获得了一块动态分配的连续内存,这块连续的内存可以放n个char *... -
二维字符数组的定义,初始化及引用,C语言二位字符数组详解
2020-12-06 01:56:05二维字符数组一般用于存储和处理多... //定义了一个3行10列的二维字符数组c由于该二维数组的每一行 c[0]、c[1]、c[2] 均是含有 10 个元素的一维字符数组,即二维数组的每一行均可表示一个字符串。二维字符数组的初始... -
二维字符数组赋值和字符串比较
2018-11-29 22:51:46一、赋值 1. 声明时初始化赋值 char str[][20]={"aaa","bbb","ccc"}; 2. sprintf / strcpy(#include <string.h>) char str[3][20]; sprintf(str[0],"... -
labview 4字节一维数组整数转为4字节16进制字符串.vi
2020-05-12 16:38:46labview 读取的一维数组(整数)转换成16进制的字符串,方便大家进行数据处理。有问题可以留言咨询,互相学习 -
二维数组,字符串,字符数组
2020-02-23 16:31:25二维数组 一.二维数组初始化【此处介绍4种方法】 1.分行给二维数组赋初值,如int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; 2.可以将所有数据写在一个花括号内 如int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; 3.... -
C语言二维字符数组详解
2019-07-06 23:28:10二维字符数组一般用于存储和处理多个字符串,二维字符数组中的每一行均可存储表示一个字符串。 二维字符数组的定义 二维字符数组的定义格式为: char 数组名[第一维大小][第二维大小]; 如: char c[3][10]; //... -
深入解析C++中的字符数组和处理字符串的方法
2020-09-03 08:43:00主要介绍了深入解析C++中的字符数组和处理字符串的方法,需要的朋友可以参考下 -
C语言二维数组字符串的赋值
2021-05-19 09:07:13今天用到了二维数组作为参数传递的程序,通过网上搜索,针对自己遇到的问题做个整理。1、在被调用函数的形参数组定义可以省略第一维的大小,第二维不可省略,如下:void ... //不合法将二维数组作为形参时,第一维大... -
C++二维数组和二维字符串数组
2020-09-09 11:47:06字符串数组提取首地址可直接提取到字符串,而int型只能提到某一维的首地址。 -
通过赋初值的方式给一维字符数组赋字符串
2021-05-19 08:25:17同C语言中其它数据类型一样,字符串也有常量和变量之分。字符串常量是由双引号括起来的一串字符。如"string"就是字符串...下面介绍给一维字符数组赋初值的方法。1.将所赋初值放在一对花括号中,如: charstr[10]={... -
C++ | 数组(一维数组、二维数组)、字符数组、字符串
2020-01-13 17:18:2601 一维数组 数组,就是把相同数据类型的变量组合在一起而产生的数据集合。 数据就是从某个地址开始连续若干个位置形成的元素集合。 数据类型 数组名[数组大小]; 数组大小必须是整数常量,不可以是变量。 一维... -
c-一维字符数组
2018-12-17 11:14:36该语句定义了一个一维字符数组 c,大小为 10,即占 10 个字符变量空间,最大可存储长度为 9 的字符串(第 10 个字符为 '0')。由于没有显式给每个字符变量赋值,故每个字符变量为随机值。 可以采用单个字符逐个赋值... -
动态建立二维字符数组存放字符串
2020-08-01 23:12:58动态实现二维字符数组存放字符串 思路: 首先建立一维数组,每个元素都是char*型,再给每一个元素分配它的指向,使每一个元素都指向一个一维的char数组。这就实现了动态二维字符数组 分析:程序第4行先建立row个char... -
改写函数实现PHP二维/三维数组转字符串
2020-12-18 14:09:33由于工作需要,自己在手册给定的示例函数基础上改写出了这样一个函数,代码如下: 复制代码 代码如下: //将多维数组中所有的数值转换成字符串————》最多支持三维数组 function implodex( $glue, $array, $... -
C语言字符串排序——二维字符数组应用
2020-06-11 22:50:06用C语言的话,就主要考察二元字符数组那块的知识,因为只有这样才能在数组中存储多个字符串,因为字符串在C语言中就是以字符数组的形式存在的,而在C++中则多了一个string容器,就会省事很多,但是没有办法,因为我... -
三维字符数组
2020-03-07 23:40:44输入的第一行为N,即学生的个数(N<=1000) 接下来的N行包括N个学生的信息,信息格式如下: 01 李江 男 21 02 刘唐 男 23 03 张军 男 19 04 王娜 女 19 然后输入一个M(M<=10000),接下来会有M行,代表M次查询,每...