C学习笔记-字符串
对于C语言来说,字符串其实就是最后一个元素为’\0’的char数组
字符数组的初始化
字符数组常见的有两种初始化方式
char str[] = "hello";
或者
char str[] = {'h', 'e', 'l', 'l', 'o'};
当使用sizeof(str)时,得到的大小为6,此时是算上了’\0’的。
如果不指定数组长度的初始化,末尾加上’\0’,否贼输出长度未知
char str[] = {'a', 'b', 'c', '\0'};//这种初始化末尾需要加上'\0'
char str[] = "abc";//这种初始化不需要加上'\0'
字符串可以存放在堆区,栈区和常量区
缓冲区溢出
char arr[3] = {0};
scanf(%s, arr);
//当输入长度大于2,会溢出
如果输入的字符大于字符数组的长度,会造成缓冲区溢出
scanf会以空格作为分隔符
字符串处理函数
gets
从输入设备获取输入字符串
gets不会检查预留缓冲区是否可容纳输入数据,没有解决缓冲区溢出问题
fgets
fgets用于读取文件,也可从键盘读取,此时要使用stdin。fgets会截取长度符合输入指定
char s[100] = { 0 };
fgets(s, sizeof(s), stdin);
puts
puts函数打印字符串,与printf不同,puts会在最后自动添加一个’\n’
char s[] = "hello"
puts(s);
fputs
fputs是puts的文件操作版本,也不会输出多余的’\n’
char s[] = "hello";
fputs(s, stdout);
strlen,字符串长度
strlen返回字符串长度,不包含’\0’
strlen(arr);
strcat,字符串追加
strcat(a,b);
实现:
int len_a = strlen(a);
int len_b = strlen(b);
for ( int i = len_a; i < len_a + len_b; i++)
{
a[i] = b[i - lena];
}
strncat,字符串有限追加
strncat(a, b, sizeof(a) - strlen(a) - 1);
strcmp,字符串比较
如果相同返回0
strcmp(a, b);
strncmp,字符串有限比较
只要指定长度内相同,则返回0
strncmp(a, "str", 3);
strcpy字符串拷贝
把b拷贝到a
strcpy(a, b);
strncpy字符串有限拷贝
防止拷贝越界
sprintf,格式化字符串
向char数组输出一个字符串,其他行为和printf一模一样
sprintf(a, "this is a %d", 10);
strchr查找字符
返回一个位置的指针,如果没找到,返回NULL
char *c = strchr(a, 'b');
strstr查找子串
char *c = strstr(a, "abc");
strtok分割字符串
字符在第一次调用时strtok()必需给予参数s字符串,往后的调用则将参数s设置成NULL每次调用成功则返回指向被分割出片段的指针
char buf[] = "abc@defg@igk";
char *p = strtok(buf, "@");;
while (p)
{
printf("%s\n", p);
p = strtok(NULL, "@");
}
atoi转化为int
将字符串整数转化为整数
atoi(buf);
atof转化为float
将字符串整数转化为单精度浮点数
atof(buf);
atol转化为long
将字符串整数转化为long类型
atol(buf);
C学习笔记-字符串的更多相关文章
- 《python基础教程(第二版)》学习笔记 字符串(第3章)
<python基础教程(第二版)>学习笔记 字符串(第3章)所有的基本的序列操作(索引,分片,乘法,判断成员资格,求长度,求最大最小值)对字符串也适用.字符串是不可以改变的:格式化输出字符 ...
- 【Redis】命令学习笔记——字符串(String)(23个超全字典版)
Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合). 本篇基于redis 4.0.11版本,学习字符串( ...
- es6学习笔记--字符串&数值&数组&函数&对象的扩展
这几天抽空学习了es6语法,关于字符串,数值,数组,函数以及对象的扩展,看到es6标准入门这本书,里面讲的扩展特别多,我认为有几部分在项目上用不到,就挑有用的当笔记学习了. 字符串的扩展 str.in ...
- Java学习笔记--字符串和文件IO
1.Java中的字符串类和字符的表示 2.区分String,StringBuilder和StringBuffer 3.从命令行中给main方法传递参数 4.文件操作 1 Java中的字符串和字符 1. ...
- Python学习笔记-字符串
Python之使用字符串 1.所有的标准序列操作(索引,分片,乘法,判断成员资格,求长度,取最小值,最大值)对字符串同样适用.但是字符串都是不可变的. 2.字符串格式化使用字符串格式化操作符即%. f ...
- Java-J2SE学习笔记-字符串转化为二维数组
1.字符串转化为二维Double数组 2.代码: package Test; public class TestDouble { public static void main(String[] ar ...
- Java学习笔记——字符串常用函数
class JavaTest4_String { public static void main(String[] args) { String str1 = "IOS,ANDROID,BB ...
- C语言学习笔记--字符串函数
字符串函数 需要包含头文件#include<stdio.h> strlen strcmp strcpy strchr strstr strcasestr
- 【学习】js学习笔记---字符串对象
一.属性 1.length 字符串的长度,且不区分中英文的字节. 示例代码: var str="abcdefghijklmn"; var str1="中文汉语" ...
- Python学习笔记 - 字符串和编码
#!/usr/bin/env python3 # -*- coding: utf-8 -*- #第一行注释是为了告诉Linux/OS X系统, #这是一个Python可执行程序,Windows系统会忽 ...
随机推荐
- Rendering in UE4(Gnomon School UE4 大师课笔记)
Rendering in UE4 Presented at the Gnomon School of VFX in January 2018, part two of the class offers ...
- 洛谷P1140 相似基因【线性dp】
题目:https://www.luogu.org/problemnew/show/P1140 题意: 给定两串基因串(只包含ATCG),在其中插入任意个‘-’使得他们匹配.(所以一共是5种字符) 这5 ...
- 1 Java面向对象
0 工具 在分析面向对象时最好采用UML图进行分析设计 1 Java面向对象的特点 java采用面向对象的方法设计程序主要体现在:对象有属性和方法,事件的发生是对象间的信息交互产生的即程序中的get ...
- hdu 4810 Wall Painting (组合数+分类数位统计)
Wall Painting Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) T ...
- 积性函数,线性筛入门 HDU - 2879
HDU - 2879HeHe 题意:He[N]为[0,N−1]范围内有多少个数满足式子x2≡x (mod N),求HeHe[N]=He[1]×……×He[N] 我是通过打表发现的he[x]=2k,k为 ...
- 洛谷 U5122 T2-power of 2(费马小定理)
U5122 T2-power of 2 题目提供者胡昊 题目描述 是一个十分特殊的式子. 例如: n=0时 =2 然而,太大了 所以,我们让对10007 取模 输入输出格式 输入格式: n 输出格式: ...
- 字符串匹配问题x
qwq这个是栈的w 不是树w qwq我承认我发题很杂啦 字符串匹配问题x [问题描述] 字符串中只含有括号 (),[],<>,{},判断输入的字符串中括号是否匹配 ...
- IntelliJ IDEA 2017.3 搭建一个多模块的springboot项目(三)
你得先看完前两篇文章才可以进行第三章.这章我又新建了一个模块,起名叫project-core.建立方式与(一)里面一致,一个普通的maven模块.不需要勾选archetype的那种. 大家自己建好后, ...
- SRS之SrsTsContext::encode_pes详解
1. SrsTsContext::encode_pes 该函数位于 srs_kernel_ts.cpp 中.下面的分析基于假设当前要封装的消息是视频. /* * @msg: 要写入到 ts 文件中的音 ...
- AndroidStudio NDK环境3种搭建方式
AndroidStudio NDK环境3种搭建方式 转载. https://blog.csdn.net/zhang_jun_ling/article/details/85621427 一.前言 ...