博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c语言字符串操作,及常用函数
阅读量:4567 次
发布时间:2019-06-08

本文共 3745 字,大约阅读时间需要 12 分钟。

一,字符串操作

 

1 . strcpy : 拷贝

char *stpcpy(char *destin, char *source);

 

2 . strcat :  拼接

char *strcat(char *destin, char *source);

 

 

3 . strchr : 查找第一个字符匹配

char *strchr(char *str, char c);

 

strrchr : 查找最后一个匹配

char *strrchr(char *str, char c);

 

strstr : 查找第一个匹配字符串

char *strstr(const char *haystack, const char * needle);

 

4 . strcmp : 比较

int strcmp(char *str1, char *str2);

Asic码,str1>str2,返回值 > 0;两串相等,返回0

 

strncasecmp : 忽略大小写比较前n个

int strncasecmp(const char *s1, const char *s2, size_t n);

 

5 . strdup : 将串拷贝到新建的位置处

char *strdup(char *str);

#include 
#include
#include
int main(void){ char *dup_str, *string = "abcde"; dup_str = strdup(string); printf("%s\n", dup_str); free(dup_str); return 0;}

 

6 . strtok : 分隔

char * strtok(char *s, const char *delim);

char *strtok_r
(char *
str
, const char *
delim
, char **
saveptr
);
strtok_r函数是strtok函数的可重入版本。str为要分解的字符串,delim为分隔符字符串。
char **
saveptr参数是一个指向char *的指针变量,用来在strtok_r内部保存切分时的上下文,以应对连续调用分解相同源字符串。
 
int in=0;char buffer[INFO_MAX_SZ]="Fred male 25,John male 62,Anna female 16";char *p[20];char *buf=buffer;char *outer_ptr=NULL;char *inner_ptr=NULL; while((p[in] = strtok_r(buf, ",", &outer_ptr))!=NULL) {  buf=p[in];  while((p[in]=strtok_r(buf, " ", &inner_ptr))!=NULL){    in++;    buf=NULL;   }  buf=NULL;} printf("Here we have %d strings/n",in); for (int j=0; j
%s

 

7 . swab : 交换字符串n位

void swab (char *from, char *to, int nbytes);

 

二,转换数值类型

 

1 . strtod : 从字符串 中转换 double 类型数值,并将后续的字符串指针存储到 end 指向的 char* 类型存储。

double strtod(const char *nptr, char **endptr);

float strtof(const char *nptr, char **endptr);

2 .  atoi(p) 字符串转换到 int 整型 
  atof(p) 字符串转换到 double 符点数 
  atol(p) 字符串转换到 long 整型 

 

#include <stdlib.h>

int atoi(const char *nptr);

long atol(const char *nptr);

double atof(const char *nptr);

 

三,字符检查 

int isalpha(int c) 检查是否为字母字符 
isupper() 检查是否为大写字母字符 
islower() 检查是否为小写字母字符 
isdigit() 检查是否为数字 
isxdigit() 检查是否为十六进制数字表示的有效字符 
isspace() 检查是否为空格类型字符 
iscntrl() 检查是否为控制字符 
ispunct() 检查是否为标点符号 
isalnum() 检查是否为字母和数字 
isprint() 检查是否是可打印字符 
isgraph() 检查是否是图形字符,等效于 isalnum() | ispunct() 

 

四,scanf 

 

1 . sscanf : 从一个字符串中读进与指定格式相符的数据

int sscanf(const char *str, const char *format, ...);

sscanf("1 2 3","%d %d %d",buf1, buf2, buf3); 

 

2 . sprintf : 把格式化的数据写入某个字符串缓冲区。

int sprintf( char *buffer, const char *format, [ argument] … );

 

五,mem

 

1 . memcpy : memcpy中dest和source中的区域不能重叠

void *memcpy(void *dest, const void *source, size_t count);

 

2 . memmove : 如果目标区域和源区域有重叠的话,memmove能够保证源串在被覆盖之前将重叠区域的字节拷贝到目标区域中。

void *memmove(void *dest, const void *source, size_t count)

 

**memcpy和memmove的区别

http://blog.chinaunix.net/uid-22780578-id-3346391.html

 

3 . memcmp :  比较内存区域buf1和buf2的前count个字节。

int memcmp(const void *s1, const void *s2, size_t n);

 

4 . mmap : 

void* mmap(void* start,size_t length,int prot,int flags,int fd,off_t offset);

int munmap(void* start,size_t length);

 

port : 

PROT_EXEC //页内容可以被执行
PROT_READ //页内容可以被读取
PROT_WRITE //页可以被写入
PROT_NONE //页不可访问

 flags : 

MAP_FIXED //使用指定的映射起始地址,如果由start和len参数指定的内存区重叠于现存的映射空间,重叠部分将会被丢弃。如果指定的起始地址不可用,操作将会失败。并且起始地址必须落在页的边界上。
MAP_SHARED //与其它所有映射这个对象的进程共享映射空间。对共享区的写入,相当于输出到文件。直到msync()或者 ()被调用,文件实际上不会被更新。
MAP_PRIVATE //建立一个写入时拷贝的私有映射。内存区域的写入不会影响到原文件。这个标志和以上标志是互斥的,只能使用其中一个。
MAP_DENYWRITE //这个标志被忽略。
MAP_EXECUTABLE //同上
MAP_NORESERVE //不要为这个映射保留交换空间。当交换空间被保留,对映射区修改的可能会得到保证。当交换空间不被保留,同时 ,对映射区的修改会引起段违例信号。
MAP_LOCKED //锁定映射区的页面,从而防止页面被交换出内存。
MAP_GROWSDOWN //用于堆栈,告诉 VM系统,映射区可以向下扩展。
MAP_ANONYMOUS //匿名映射,映射区不与任何文件关联。
MAP_ANON //MAP_ANONYMOUS的别称,不再被使用。
MAP_FILE //兼容标志,被忽略。
MAP_32BIT //将映射区放在进程 的低2GB,MAP_FIXED指定时会被忽略。当前这个标志只在x86-64平台上得到支持。
MAP_POPULATE //为文件映射通过预读的方式准备好页表。随后对映射区的访问不会被页违例阻塞。
MAP_NONBLOCK //仅和MAP_POPULATE一起使用时才有意义。不执行预读,只为已存在于内存中的页面建立 入口。

转载于:https://www.cnblogs.com/chencesc/p/4282314.html

你可能感兴趣的文章
16JavaScript for循环
查看>>
Fuchsia OS入门官方文档
查看>>
[LeetCode] 1. Two Sum
查看>>
【转】直方图中bins的理解及处理
查看>>
bzoj2595 [Wc2008]游览计划
查看>>
noip2009 潜伏者
查看>>
HDU3986 SPFA
查看>>
Vue.js 响应式原理
查看>>
pwa
查看>>
GPU卡掉卡
查看>>
Javascript中的异步
查看>>
redis.config 配置文件,附上我知道的理解
查看>>
FISCO-BCOS平台共识
查看>>
Android OpenGL ES(三)----编程框架
查看>>
python基础-字符串操作
查看>>
Codevs No.1163 访问艺术馆
查看>>
缓存穿透,缓存击穿,缓存雪崩解决方案分析
查看>>
docker入门学习(二)mysql安装
查看>>
吴裕雄--天生自然 JAVASCRIPT开发学习:函数调用
查看>>
吴裕雄 PYTHON 神经网络——TENSORFLOW 无监督学习处理MNIST手写数字数据集
查看>>