c语言字符串处理的常用库函数总结,c语言字符串操作,及常用函数

发布时间:2022-09-30 14:00

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

printf(">%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

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()或者munmap()被调用,文件实际上不会被更新。

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一起使用时才有意义。不执行预读,只为已存在于内存中的页面建立页表入口。

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号