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 ...
随机推荐
- Legacy C++ MongoDB Driver
https://docs.mongodb.com/ecosystem/drivers/cpp/
- laravel 遍历循环
@foreach($xxx as $k=>$y) {{$y->id}} @endforeach
- string.Format 处理 double 的问题
出处: http://www.cnblogs.com/albert-struggle/archive/2012/05/22/2512744.html 1.格式化货币(跟系统的环境有关,中文系统默认格式 ...
- VC++11 编译中的一些问题的解决办法
1. vc++ 的编译器的错误往往定位在错误的那一处,但是那一处可能在库的底层,而我们知道库,一般都不会错. 这时候应该好好看看我们自己的头文件是否正确,有可能头文件中的一些错误引发了连锁反应. 2 ...
- ubuntu 14 安装XML::Simple 模块
最近需要用到perl 来解析xml 文件,从网上搜索了一下,大部分都建议使用XML::Simple 模块来解析,这里记录一下安装过程 方法一: 直接使用CPAN 来安装模块 $ perl -MCPAN ...
- webpack 中导入 vue 和普通网页使用 vue 的区别(四)
一:在普通网页中使用 vue 使用 script 标签,引入 vue 包 在 ndex 页面中,创建一个 id 为 App 的 div 容器 通过 new Vue 得到一个 vue 实例 二:在 we ...
- git上如何删除已有项目
删除fork别人的项目 由于最近想删除fork别人项目,步骤如下. 点击进入需要删除fork的项目 进入Settings选项 找到delete this repository按钮 确认是否要删除,Pl ...
- Python-1-基础
获取用户输入 >>> x = input("x: ") x: 34 >>> y = input("y: ") y: 42 & ...
- AFHTTPSessionManager下载文件 及下载中 进度条处理,进度条处理需要特别注意,要加载NSRunLoop 中
1.下载文件 和进度条处理代码 - (void)timer:(NSTimer *)timer{ // 另一个View中 进度条progress属性赋值 _downloadView.progress = ...
- 洛谷1537(bitset+01背包)
总数是偶数并且其一半可得即可. bitset的移位可替代原本的数组转移. #pragma comment(linker, "/STACK:1024000000,1024000000" ...