2_C语言中的数据类型 (十)数组
1 字符串与字符数组
1.1 字符数组定义
|
char array[100]; |
1.2 字符数组初始化
|
char array[100] = {'a', 'b', 'c','d'}; |
|
char array[100] = "abcd"; |
|
char array[100] = { 0 }; |
|
char array[] = "abcd"; |
1.3 字符数组使用
1.4 随机数产生函数rand与srand
头文件stdlib.h
Rand是伪随机数产生器,每次调用rand产生的随机数是一样的
如果调用rand之前先调用srand就出现任意的随机数
只要能保证每次调用srand函数的时候,参数的值是不同的,那么rand函数就一定会产生不同的随机数
|
#include <time.h> int t = (int)time(NULL); srand(t); for (int i = 0; i < 10; i++) { printf("%d\n", rand()); } |
1.5 用scanf输入字符串
|
char s[10] = { 0 }; scanf("%s", s);//"%s"的作用就是输入一个字符串的,scanf是以回车键作为输入完成标示的,但回车键本身并不会作为字符串的一部分 //如果scanf参数中的数组长度小于用户在键盘输入的长度,那么scanf就会缓冲区溢出,导致程序崩溃 int i; for (i = 0; i < 10; i++) { printf("%d\n", s[i]); } printf("----------------------------------\n"); printf("%s\n", s); return 0; |
1.6 字符串的结束标志
Scanf将回车,空格都认为是字符串输入结束标志,
1.7 字符串处理函数
1.7.1 gets
|
char s[100] = { 0 }; gets(s);//gets认为回车的输入结束标示,空格不是输入结束标示,所以用gets这个函数就可以实现输入带空格的字符串 //gets和scanf一样存在缓冲区溢出的问题 int i; for (i = 0; i < 10; i++) { printf("%d\n", s[i]); } printf("----------------------------------\n"); printf("%s\n", s); |
Gets不能用类似“%s”或者“%d”之类的字符转义,只能接受字符串的输入
1.7.2 fgets函数
gets函数不检查预留缓冲区是否能够容纳用户实际输入的数据。多出来的字符会导致内存溢出,fgets函数改进了这个问题。
由于fgets函数是为读取文件设计的,所以读取键盘时没有gets那么方便
|
char s[100] = { 0 }; fgets(s, sizeof(s), stdin); |
1.7.3 puts函数
puts函数打印字符串,与printf不同,puts会在最后自动添加一个’\n’
|
char s[] = "hello world"; puts(s); |
1.7.4 fputs函数
fputs是puts的文件操作版本,
|
char s[] = "hello world"; fputs(s, stdout); |
1.7.5 strlen,字符串长度
size_t strlen(const char * _Str);
返回不包含字符串结尾’\0’的字符串长度
|
char s[100] = "hello world"; int len = strlen(s);//得到字符串长度,返回一个字符串中有效字符的数量(不包含字符串结尾的0) printf("len = %d\n", len); return 0; |
1.7.6 strcat,字符串追加
size_t strcat(char * _Str1, const char * _Str2);
将参数_Str2追加到_Str1后尾
|
char s[1024] = "hello world"; int len = strlen(s);//得到字符串长度,返回一个字符串中有效字符的数量(不包含字符串结尾的0) printf("len = %d\n", len); char s1[100] = "abc123456789"; strcat(s, s1);//将两个字符串合并,结果放入第一个参数里面,strcat也存在缓冲区溢出的问题 printf("%s\n", s); |
1.7.7 strncat,字符串有限追加
size_t strncat(char * _Str1, const char * _Str2, size_t len);
1.7.8 strcmp,字符串比较
int strcmp(const char * _Str1, const char * _Str2);
比较两个字符串是否相等,相等返回0,不等返回非0
1.7.9 strncmp,字符串有限比较
1.7.10 strcpy字符串拷贝
char *strcpy(char * _Str1, const char * _Str2);
将参数_Str2拷贝到参数_Str1中
1.7.11 strncpy字符串有限拷贝
1.7.12 sprintf,格式化字符串
和printf函数功能类似,printf函数将格式化结果输出到屏幕,sprintf将格式化结果输出到字符串
1.7.13 Sscanf函数
Sscanf类似于scanf函数,,scanf从键盘读取用户输入,scanf从指定格式化字符串读取输入
1.7.14 strchr查找字符
char * strchr(char * _Str, int _Ch);
在参数_str中查找参数_Ch指定字符,找到返回字符_Ch在_Str中所在位置,没有找到返回NULL;
1.7.15 strstr查找子串
char * strstr(char * _Str, const char * _SubStr)
在参数_str中查找参数_SubStr指定子串,找到返回子串在_Str中所在位置,没有找到返回NULL;
1.7.16 strtok分割字符串
字符在第一次调用时strtok()必需给予参数s字符串,往后的调用则将参数s设置成NULL每次调用成功则返回指向被分割出片段的指针
|
char buf[] = "abc@defg@igk"; char *p = strtok(buf, "@"); while (p) { printf("%s\n", p); p = strtok(NULL, "@"); } |
1.7.17 atoi转化为int
需要包含头文件stdlib.h
1.7.18 atof转化为float
1.7.19 atol转化为long
#include <stdio.h> int main01()
{
//char array[100] = {'a', 'b', 'c','d'};
//char array[100] = "abcd";
//char array[100] = { 0 };
char array[] = "hello world";
//array[0] = 'a';
//array[4] = 0
printf("%d\n", sizeof(array)); int i;
int j;
for (i = ; i < (sizeof(array)-); i++)
{
for (j = ; j < ((sizeof(array)-) - i);j++)
{
if (array[j - ] > array[j])
{
char tmp = array[j];
array[j] = array[j - ];
array[j - ] = tmp;
}
}
} printf("%s\n", array);
return ;
} int main()//字符串逆置
{
char str[] = "你好世界";
int i = ;
while (str[i++]);//求字符串有多长 int min = ;
int max = i - ;
while (min < max)
{
char tmp = str[min];
str[min] = str[max];
str[max] = tmp;
min++;
max--;
}
printf("%s\n", str);
return ;
}
资料来源:传智播客 仅供学习研究
2_C语言中的数据类型 (十)数组的更多相关文章
- 2_C语言中的数据类型 (九)数组
1 数组 1.1 一维数组定义与使用 int array[10];//定义一个一维数组,名字叫array,一共有10个元素,每个元素都是int类型的 array[0] = ...
- 2_C语言中的数据类型 (十)while、for
1 循环语句 1.1 while while(条件),如果条件为真,循环继续,条件为假,循环结束 while (1)..是死循环的写法 1.2 continu ...
- 2_C语言中的数据类型 (七)printf与scanf
1 字符串格式化输出和输入 1.1 字符串在计算机内部的存储方式 字符串是内存中一段连续的char空间,以’\0’结尾 “”是C语言表达字符串的方式 1.2 ...
- 2_C语言中的数据类型 (四)整数与无符号数
1.1 sizeof关键字 sizeof是c语言关键字,功能是求指定数据类型在内存中的大小,单位:字节 sizeof与size_t类型 1.1 int类型 1.1.1 ...
- 2_C语言中的数据类型 (一)2.1.常量和字符串常量
2.1 常量就是在程序中不可变化的量,常量在定义的时候必须给一个初值. 1.1.1 #define 定义一个宏常量 1.1.2 const 定义一个const常量 ...
- 2_C语言中的数据类型 (九)逻辑运算符与if语句、switch、条件运算符?、goto语句与标号
1 条件分支语句 1.1 关系运算符 在C语言中0代表false,非0代表真 1.1.1 < 小于 1.1.2 <= 小于 ...
- 2_C语言中的数据类型 (八)运算符
1 运算符表达式和语句 1.1 基本运算符 1.1.1 = 数据对象:泛指数据在内存的存储区域 左值:表示可以被更改的数据对象 右值:能赋给左值的量 1 ...
- 2_C语言中的数据类型 (二)进制
1.1 二进制数.位.字节与字 我们习惯于十进制的数:10,12等 一个位只能表示0,或者1两种状态,简称bit,一个位是一个bit 一个字节为8个二进制,称为8位,简称BYTE,8个比特 ...
- 2_C语言中的数据类型 (七)类型限定
1.1 类型限定 1.1.1 const const是代表一个不能改变值的常量 1.1.2 volatile 代表变量是一个可能被CPU指令之外的地方改 ...
随机推荐
- 对WebSocket技术的学习与探索(二)
近日重新开始学习WebSocket技术,什么是WebSocket,在<对WebSocket技术的学习与探索(一)>文章中已经说明白了,还没理解可以看看这篇文章http://www.ruan ...
- android 解决连接电视机顶盒失败的方法
今天在开发过程中,需要连接海美迪的电视盒子,这个盒子是基于android6.0的版本,之前连接其它电视盒子都正常,当输入 adb -s xxxx shell后,盒子连接失败,日志如下: error: ...
- 想涨工资吗?那就学习Scala,Golang或Python吧
[编者按]据薪水调查机构 PayScale 提供的数据显示,掌握 Scala,Golang 和 Python 语言以及诸如 Apache Spark 之类的大数据技术,能带来最大的薪水提升.本文作者为 ...
- M5加密字符串
private string GetMD5str(string oldStr) { //将输入转换为ASCII 字符编码 ASCIIEncoding enc = new ASCIIEncoding() ...
- python容错
#try: except: else: #为什么叫容错呢,先说说错误,这里说的错误并不是因为马虎或者什么原因在脚本中留下的bug,这个不能容掉,所谓容掉就是略过这个错误,要在测试时候发现并修正,需要容 ...
- Spark 基本概念 & 安装
1. Spark 基本概念 1.0 官网 传送门 1.1 简介 Spark 是用于大规模数据处理的快如闪电的统一分析引擎. 1.2 速度 Spark 可以获得更高的性能,针对 batch 计算和流计算 ...
- Fedora 中多显示器环境下的工作区切换
[Dual monitor workspaces] 默认情况下,fedora中 Gnome 桌面环境在切换工作去的时候,只会在 Primary display 上切换, 其他显示器保持不变.如果要实现 ...
- 一、git创建版本库及提交
第一步:从Git官网直接 下载安装程序 ,并自行配置环境变量. git config --global user.name "Your Name" // 设置用户名 git ...
- PHP中全局变量global和$GLOBALS[]的区别分析
$GLOBALS['var']是外部的全局变量本身,global $var是外部$var的同名引用或者指针 一.举例比较 例一: 复制代码 代码如下: <?php $var1 = 1; ...
- 魔法少女【动态规划问题】——NYOJ1204
个人博客页:https://www.scriptboy.cn/202.html 题目描述: 前些时间虚渊玄的巨献小圆着实火了一把. 在黑长直(小炎)往上爬楼去对抗魔女之夜时,她遇到了一个问题想请你帮忙 ...