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 ...
随机推荐
- 51nod1625(枚举&贪心)
题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1625 题意:中文题诶- 思路:枚举+贪心 一开始写的行和列同时 ...
- pycharm中模块matplolib生成图表出现中文乱码解决方法
在python文件中加入如下两行 import matplotlib.pyplot as plt plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中 ...
- H - String painter
#include <iostream> #include <algorithm> #include <cstring> #include <cstdio> ...
- 常用HTTP协议响应码(转载)
转载于: https://blog.csdn.net/github_36032947/article/details/78343734 HTTP响应码,也称http状态码(HTTP Status Co ...
- [Python]IndentationError: unindent does not match any outer indentation level
这个是缩进没对齐 可能是混用了tab与空格,到这里显示空白就可以看出来.
- 洛谷1052(路径压缩后简单dp)
同POJ3744写法都是一样的. 距离太长无意义可以压缩,注意不是随便压的,想一想可以跟%T发生关系. #include <cstdio> #include <cctype> ...
- Codeforces Round #390 (Div. 2) B
Ilya is an experienced player in tic-tac-toe on the 4 × 4 field. He always starts and plays with Xs. ...
- CATIA 基础详解 第01章 CATIA初认识
1.1 CATIA V5产品介绍 CATIA V5是基于美国IBM公司与法国达索系统公司(Dassault Systèmes)软件解决方案推出的新一代产品,它致力于满足以设计流程为中心的设计需求.它提 ...
- 092 Reverse Linked List II 反转链表 II
反转从位置 m 到 n 的链表.用一次遍历在原地完成反转.例如:给定 1->2->3->4->5->NULL, m = 2 和 n = 4,返回 1->4-> ...
- session是什么时候创建的
总结:session不是一打开网站就会立刻建立.它的建立需要基于下面两个条件中的任意一个: 1:在servlet中手动调用 HttpSession session = request.getSessi ...