栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

LinuxC字符串处理

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

LinuxC字符串处理

文章目录
  • 1、字符串输入输出
    • 1.1 字符串输入
      • 1.1.1 puts()
      • 1.1.2 putchar()
      • 1.1.3 fputc()
      • 1.1.4 fputs()
    • 1.2 字符串输入
      • 1.2.1 gets()
      • 1.2.2 getchar()
      • 1.2.3 fgets()
      • 1.2.4 fgetc()
  • 2. 字符串处理
      • 2.1 strlen()
      • 2.2 strcat()
      • 2.3 strncat()
      • 2.4 strcpy()
      • 2.5 strncpy()
      • 2.6 memset()
      • 2.7 strcmp()
      • 2.8 strncmp()
      • 2.9 strchr()
      • 2.10 strrchr()
      • 2.11 strstr()
  • 3. 字符串与数字之间的互转
    • 3.1 字符串转数字
      • 3.1.1 atoi, atol, atoll
      • 3.1.2 strtol, strtoll
      • 3.1.3 strtoul, strtoull
      • 3.1.4 atof()
      • 3.1.5 strtod(), strtof, strtold
    • 3.2 数字转字符串
  • 正则表达式


1、字符串输入输出 1.1 字符串输入 1.1.1 puts()

输出字符串并自动换行

#include 
int puts(const char *s);
1.1.2 putchar()

输出一个无符号字符到标准设备上

#include 
int putchar(int c);
1.1.3 fputc()

和putchar一样是将单个字符输出,不同的是fputc可以指定输出的文件

#include 
int fputc(int c, FILE *stream);
1.1.4 fputs()

同理fputc

#include 
int fputs(const char *s, FILE *stream);
1.2 字符串输入 1.2.1 gets()

从标准输入设备中获取用户输入的字符串。输入的字符串中就算是有空格也可以直接输入,字符串输入完成之后按回车即可,gets()函数不检查缓冲区溢出

#include 
char *gets(char *s);

和scanf()的区别

  • gets()函数允许输入
    的字符串带有空格、制表符,输入的空格和制表符也是字符串的一部分,仅以回车换行符作为字符
    串的分割符, 而scanf()函数以上所提到的都会作为分隔符。
  • gets()函数读取数据后,缓冲区不会遗留回车换行符。而scanf()读取数据后,缓冲区任然还存在用户输入的分隔符。
1.2.2 getchar()

从标准输入设备中读取一个字符(无符号字符)

#include 
int getchar(void);  // 该函数以无符号 char 强制转换为 int 的形式返回读取的字符
1.2.3 fgets()

和gets()一样,获取输入的字符串

#include 
char *fgets(char *s, int size, FILE *stream);

**与gets的区别: **

  • gets智能从标准输入设备中获取字符串,而fgets即可从标准设备中获取(fgets(s, sizeof(s), stdin)), 又可从文件中获取
  • fgets()可以设置获取字符串的最大字符数
  • gets()会将缓冲区中的换行符’n’读取出来、将其丢弃、将’n’替换为字符串结束符’’;fgets()也会将
    缓冲区中的换行符读取出来,但并不丢弃,而是作为字符串组成字符存在,读取完成之后自动在最
    后添加字符串结束字符’’
1.2.4 fgetc()

读取一个输入字符,可指定输入字符的文件或标准输入设备(stdin)

#include 
int fgetc(FILE *stream);
2. 字符串处理 2.1 strlen()

获取字符串串长度

#include 
size_t strlen(const char *s);

与C语言内置操作符关键字sizeof区别

  • sizeof 仅用于计算数据类型的大小或者变量的大小,而 strlen 只能以结尾为’ '的字符串作为参数
  • 编译器在编译时就计算出了 sizeof 的结果,而 strlen 必须在运行时才能计算出来
2.2 strcat()

字符串拼接, 将字符串src拼接到字符串dest。

#include 
char *strcat(char *dest, const char *src);
2.3 strncat()

可指定源字符串追加到目标字符串的字符数量(防止溢出)

#include 
char *strncat(char *dest, const char *src, size_t n);
2.4 strcpy()

字符串拷贝,将字符串src拷贝到dest空间

#include 
char *strcpy(char *dest, const char *src);
2.5 strncpy()

字符串拷贝,可指定源字符串拷贝到目标字符串的字符数量(防止溢出)

2.6 memset()

字符串填充,多用于初始化字符串

#include 
void *memset(void *s, int c, size_t n); // 目标字符串首地址,填充的数据(一般为0),填充的字节数

类似函数:bzero(),

#include 
void bzero(void *s, size_t n); // 将一段内存空间中的数据全部设置为 0
2.7 strcmp()

字符串比较,该函数进行字符串比较,主要是通过比较字符串中的字符对应的 ASCII 码值,strcmp 会根据 ASCII 编码依次比较 str1 和 str2 的每一个字符,直到出现了不同的字符,或者某一字符串已经到达末尾(遇见了字
符串结束字符’ ')

#include 
int strcmp(const char *s1, const char *s2);
2.8 strncmp()

字符串比较,指定比较的长度,最多比较前n个字符

#include 
int strncmp(const char *s1, const char *s2, size_t n);
2.9 strchr()

查找到给定字符串中的某一个字符
返回值: 返回字符 c 第一次在字符串 s 中出现的位置,如果未找到字符 c,则返回 NULL

#include 
char *strchr(const char *s, int c);
2.10 strrchr()

与strchr()不同的是,该函数从右边开始寻找第一次出现字符c的位置,而不是左边

#include 
char *strrchr(const char *s, int c);
2.11 strstr()

在给定字符串haystack中查找子字符串needle
返回值: 如果目标字符串 haystack 中包含了子字符串 needle,则返回该字符串首次出现的位置;如果未
能找到子字符串 needle,则返回 NULL。

#include 
char *strstr(const char *haystack, const char *needle);
3. 字符串与数字之间的互转 3.1 字符串转数字 3.1.1 atoi, atol, atoll

三个函数可用于将字符串分别转换为 int、long int 以及 long long 类型的数据
目标字符串 nptr 中可以包含非数字字符,转换时跳过前面的空格字符(如果目标字符串开头存在空格
字符),直到遇上数字字符或正负符号才开始做转换,而再遇到非数字或字符串结束时(’ /0 ')才结束转换,
并将结果返回。

#include 

int atoi(const char *nptr);
long atol(const char *nptr);
long long atoll(const char *nptr);
3.1.2 strtol, strtoll

可分别将字符串转为 long int 类型数据和 long long ing 类型数据, 可指定进制

#include 

long int strtol(const char *nptr, char **endptr, int base);
long long int strtoll(const char *nptr, char **endptr, int base);
  • nptr:需要进行转换的目标字符串。
    endptr:char **类型的指针,如果 endptr 不为 NULL,则 strtol()或 strtoll()会将字符串中第一个无效字符的地址存储在endptr 中。如果根本没有数字,strtol()或 strtoll()会将 nptr 的原始值存储在endptr 中(并返回 0)。也可将参数 endptr 设置为 NULL,表示不接收相应信息。
  • base:数字基数,参数 base 必须介于 2 和 36(包含)之间,或者是特殊值 0。参数 base 决定了字符串转换为整数时合法字符的取值范围,譬如,当 base=2 时,合法字符为’ 0 ‘、’ 1 ‘(表示是一个二进制表示的数字字符串);当 base=8 时,合法字符为’ 0 ‘、’ 1 ‘、’ 2 ‘、’ 3 ‘……’ 7 ‘(表示是一个八进制表示的数字字符串);当 base=16 时,合法字符为’ 0 ’ 、’ 1 ‘、’ 2 ‘、’ 3 ‘……’ 9 ‘、’ a ‘……’ f ‘(表示是一个十六进制表示的数字字符串);当 base 大于 10 的时候,’ a ‘代表 10、’ b ‘代表 11、’ c ‘代表 12,依次类推,’ z '代表 35(不区分大小写)。
  • 返回值:分别返回转换之后得到的 long int 类型数据以及 long long int 类型数据。
  • 需要进行转换的目标字符串可以以任意数量的空格或者 0 开头,转换时跳过前面的空格字符,直到遇
    上数字字符或正负符号(’ + ‘或’ - ‘)才开始做转换,而再遇到非数字或字符串结束时(’ /0 ')才结束转换,并将
    结果返回
3.1.3 strtoul, strtoull

将字符串分别转为unsinged long int , unsigned long long int型整数

#include 
unsigned long int strtoul(const char *nptr, char **endptr, int base);
unsigned long long int strtoull(const char *nptr, char **endptr, int base);
3.1.4 atof()

将字符串转为double类型的浮点数据

#include 
double atof(const char *nptr);
3.1.5 strtod(), strtof, strtold

分别将字符串转换为 double 类型数据、float 类型数据、long double 类型数据

#include 

double strtod(const char *nptr, char **endptr);
float strtof(const char *nptr, char **endptr);
long double strtold(const char *nptr, char **endptr);
3.2 数字转字符串

数字转字符串直接用**sprintf()和snprintf()**即可

正则表达式
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/950449.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号