C05 C语言字符串和数组
目录
- 数组
- 字符串
数组
概念
- 数组是有序数据的集合。
- 数组中的每一个元素属于同一个数据类型。
- 通过数组名和下标唯一确定数组中的元素。
一维数组的定义
语法格式
数据类型 数组名[常量表达式]
例如:int arr[10]
表示定义了一个整型数组,数组名为a,数组中有10个元素。
数组的下标从0开始。
数组元素的引用
C语言规定只能逐个引用数组元素二不能一次引用整个数组。
数组元素的的表示形式为: 数组名[下标]
示例:
输出结果:
数组初始化
1.在定义数组时初始化
2.初始化部分元素值
输出
3.初始化全部元素值
初始化全部元素时候,可以不指定数组长度
4.所有元素初始化为0
输出
注意:只能限于初始化元素为0值。否则的话只是对第一个元素初始化。
示例
使用数组解决Fibonacci数列。
Fibonacci数列定义:数列由 0 和 1 开始,之后的系数由之前的两数相加。首几个斐波那契系数是:
0,1,1,2,3,5,8,13,21
输出结果:
二维数组的定义
语法格式
数组名[下标][下标]
二维数组的引用
同一维数组,通过数组名和下标确定唯一的二维数组元素。
二维数组的初始化
1.分行初始化
输出:
2.全部初始化
3.部分元素初始化
输出:
4.初始化全部数据时候可以不指定第一维长度
示例
将一个二维数组行和列的元素互换,保持到另一个二维数组中。
源码:
字符串
定义
C语言中没有定义字符串类型的数据,所以字符串是作为字符数组来处理的。字符数组的定义和使用同其他基本数据类型数组。
注意:字符数组中,C语言使用’\0’来结束一个字符串。如果一个数组包含1个以上的’\0’,则遇到第一个’\0’的时候输出结束。
使用字符串初始化字符数组
输出:
或者:
使用scanf函数接收信息初始化字符数组
注意,sacnf中,数组作为地址参数不需要添加”&”。
字符串处理函数
注意,字符串处理函数需要包含string.h文件。
例如:
#include <stdio.h>
#include <string.h>
puts()和gets()
语法格式:
puts(字符数组) :向终端输出字符串
gets(字符数组) :从中断获取字符串
示例:
strcat()
语法格式:
strcat(字符数组1,字符数组2)
作用:
把字符数组2连接到字符数组1后面,结果放在字符数组1中。
示例:
输出:
strcpy()和strncpy()
语法格式:
Strcpy(字符数组1,字符串2)
作用:
将字符串2复制到字符数组1中。
示例:
输出:
注意:
1.字符数组1必须写出数组名形式;字符串2可以是字符数组名,也可以是一个字符串常量。
2.C语言中,不能使用赋值语句将一个字符串常量或者字符数组直接赋值给一个字符数组,例如以下是错误的:
3.strncpy(字符数组1,字符串2,复制长度)可以指定字符串2中的前n个字符复制到字符数组1中。
strcmp()
语法格式
strcmp(字符串1,字符串2)
作用
比较字符串1和字符串2
比较规则:
两个字符串从左向右逐个字符比较(按照ASCII码值比较),直到出现’\0’为止。如果全部字符相同,则两个字符串相等;若出现不同的字符,则以第一个不相同的字符的比较结果为准。
示例:
strlen()
语法格式
strlen(字符数组)
作用
测量字符数组的长度,不包括’\0’。
strlwr()和strupr()
语法格式
strlwr(字符串)和strupr(字符串)
作用
把字符串转换成小写(或者大写)。
strcspn()
语法格式
strcspn(字符串1,字符串2)
作用
查找字符串2在字符串1中的位置
示例
数据类型转换
头文件:#include <stdio.h>
sprintf()函数用于将格式化的数据写入字符串,其原型为:
int sprintf(char *str, char * format [, argument, ...]);
示例代码:
sprintf(s, "%d", 123); //把整数123打印成一个字符串保存在s中
sprintf(s, "%8x", 4567); //小写16进制,宽度占8个位置,右对齐
上机练习
- 需求描述:设计一个字符二维数组,用来存储学生信息,学生信息包括:学号,姓名、性别(男或者女)、年龄、电话、地址。
- 提示:二维数组定义 students[10][300],从控制台接收学生信息保持到二维数组,从数组读取学生信息,显示到控制台。
- 提示代码:
#include <stdio.h>
#include <string.h> int main()
{
int i;//循环变量
char i_temp[30];//整数转换字符数组临时变量
char stu_temp[300];//学生信息临时数组
char list[10][300];//学生信息数组
char tag[]="$";
//初始化两个学生
strcpy(list[0],"1001$张三$男$23$13122224444$厦门");
strcpy(list[1],"1002$李四$女$21$13322224444$福州"); //从控制台输入学生信息
int id;
char name[50];
char gender[3];
int age;
char tel[14];
char address[50]; printf("请输入学号:");
scanf("%d",&id);
sprintf(i_temp,"%d",id);//学号转成字符数组
strcpy(stu_temp,i_temp);
strcat(stu_temp,tag); printf("请输入姓名:");
scanf("%s",name);
strcat(stu_temp,name);
strcat(stu_temp,tag); printf("请输入性别:");
scanf("%s",gender);
strcat(stu_temp,gender);
strcat(stu_temp,tag); printf("请输入年龄:");
scanf("%d",&age);
sprintf(i_temp,"%d",age);//年龄转成字符数组
strcat(stu_temp,i_temp);
strcat(stu_temp,tag); printf("请输入电话:");
scanf("%s",tel);
strcat(stu_temp,tel);
strcat(stu_temp,tag); printf("请输入地址:");
scanf("%s",address);
strcat(stu_temp,address);
strcat(stu_temp,tag); strcpy(list[2],stu_temp); //输出学生信息
char temp[300];//临时变量
for(i=0;i<3;i++){
strcpy(temp,list[i]);
int length=strlen(temp);
for(int j=0;j<length;j++){
if(temp[j]=='$'){
temp[j]='\t';//使用制表符'\t'替换'$'
}
}
printf("%s\n",temp);
} return 0;
}
C05 C语言字符串和数组的更多相关文章
- C语言字符串与字符数组
字符串儿与字符数组 字符数组的定义: Char buffer[]; 字符数组初始化: Char buffer1[]="hello world"; 利用scanf输入一个字符串儿 代 ...
- js课程 3-10 js中字符串函数数组函数和其它语言中对应函数的区别和联系是什么
js课程 3-10 js中字符串函数数组函数和其它语言中对应函数的区别和联系是什么 一.总结 一句话总结:js中是对象点方法的形式,这些方法都是对象的方法,而在php.java中却不是这样. 1.j ...
- C语言基础知识-数组和字符串
C语言基础知识-数组和字符串 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.数组概述 在程序设计中,为了方便处理数据把具有相同类型的若干变量按有序形式组织起来的方式我们称为数组 ...
- sizeof、strlen、字符串、数组,整到一块,你还清楚吗?
写在前面 sizeof.strlen.字符串.数组,提到这些概念,相信学过C语言的人都能耳熟能详,也能谈得头头是道,但是,在实际运用中,当这些内容交织在一起时,大家却不一定能搞地清清楚楚,本文的目的正 ...
- C语言字符串操作总结大全(超详细)
本篇文章是对C语言字符串操作进行了详细的总结分析,需要的朋友参考下 1)字符串操作 strcpy(p, p1) 复制字符串 strncpy(p, p1, n) 复制指定长度字符串 strcat( ...
- 03- Shell脚本学习--字符串和数组
字符串 字符串是shell编程中最常用最有用的数据类型(除了数字和字符串,也没啥其它类型好用了),字符串可以用单引号,也可以用双引号,也可以不用引号.单双引号的区别跟PHP类似: 单双引号的区别: 双 ...
- C语言学习004:数组与指针
在C语言中,字符串实际上就是字符数组,在内存中字符串"Shatner"存储的形式是这样的
- C语言中的数组的一些笔记
C语言是面向过程的语言. 计算数组长度: Int count =sizeof(ages)/sizeof(int); C语言里面输出字符串,必须以'\0'结束,如果没有则一直执行下去. Char nam ...
- C语言字符串长度(转)
C语言字符串长度的计算是编程时常用到的,也是求职时必考的一项. C语言本身不限制字符串的长度,因而程序必须扫描完整个字符串后才能确定字符串的长度. 在程序里,一般会用strlen()函数或sizeof ...
随机推荐
- CTP 下单返回错误: 没有报单权限 和字段错误需要注意的问题
没有报单权限一般被认为期货公司没有开权限, 但是更多的问题是没有填写 BrokerId, InvestorId 下单字段错误注意一个容易忽略的地方: a. order 应该全部设为0, b. orde ...
- sql 语句 替换字段的一些内容
update t_table set field = replace(field,'替换内容','替换为');
- java数据结构----带权图
1.带权图:要引入带权图,首先要引入最小生成树,当所有的边拥有相同的权值时.问题变得简单了,算法可以选择任意一条边加入最小生成树.但是当边有不同的权值时,需要用一些算法决策来选择正确的边. 2.带权图 ...
- django-返回客户端外网ip服务
在服务器应用初始化的时候,比如salt-minion,需要在配置文件里说明自己的id,一般用ip. 如果都在一个内网里,从ip命令里获取就行了. 但现在的企业后台环境更加复杂,很多都是跨机房.有物理机 ...
- Qt 进程和线程之二:启动线程
Qt提供了对线程的支持,这包括一组与平台无关的线程类.一个线程安全的发送事件的方式,以及跨线程的信号槽的关联.这些使得可以很容易地开发可移植的多线程Qt应用程序,可以充分利用多处理器的机器.多线程编程 ...
- UVa12186:Another Crisis(树形DP)
一道简单的树形DP送给你. A couple of years ago, a new world wide crisis started, leaving many people with econo ...
- 2017 Multi-University Training Contest - Team 1 KazaQ's Socks
Problem Description KazaQ wears socks everyday. At the beginning, he has n pairs of socks numbered f ...
- JDBC事务之理论篇
事务: 事务是数据库操作的基本逻辑单位,一般来说,事务总是并发地执行,并且这些事务可能并发地存取相同的数据.因此为了保证数据的完整性和一致性,所有的JDBC相符的驱动程序都必须支持事务管理. 事务可以 ...
- 096 Unique Binary Search Trees 不同的二叉查找树
给出 n,问由 1...n 为节点组成的不同的二叉查找树有多少种?例如,给出 n = 3,则有 5 种不同形态的二叉查找树: 1 3 3 2 1 ...
- Railroad UVALive - 4888 记忆化搜索
https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_probl ...