memchr
作用:buffer指向的数组的count个字符的字符串里查找ch 首次出现的位置。返回一个指针,指向ch 在字符串中首次出现的位置, 如果ch 没有在字符串中找到,返回NULL
语法:
#include <string.h>
void *memchr( const void *buffer, int ch, size_t count );
例子:
char names[] = "Alan Bob Chris X Dave";
if( memchr(names,'X',strlen(names)) == NULL )
printf( "Didn't find an X\n" );
else
printf( "Found an X\n" );
strchr
功能:功能:函数返回一个指向str 中ch 首次出现的位置,当没有在str 中找ch到返回NULL。
语法
#include <string.h>
char *strchr( const char *str, int ch );
memcmp
作用:函数比较buffer1 和 buffer2的前count 个字符。返回值如下:Value
less than 0 buffer1 is less than buffer2
equal to 0 buffer1 is equal to buffer2
greater than 0 buffer1 is greater than buffer2
语法:
#include <string.h>
int memcmp( const void *buffer1, const void *buffer2, size_t count );
strcmp
==功能:==比较字符串str1 and str2, 返回值如下:
语法:
#include <string.h>
int strcmp( const char *str1, const char *str2 );
例子
printf( "Enter your name: " );
scanf( "%s", name );
if( strcmp( name, "Mary" ) == 0 )
printf( "Hello, Dr. Mary!\n" );
memcpy
作用::函数从from中复制count 个字符到to中,并返回to指针。 如果to 和 from 重叠,则函数行为不确定。
语法:
#include <string.h>
void *memcpy( void *to, const void *from, size_t count );
strcpy
作用:制字符串from 中的字符到字符串to,包括空值结束符。返回值为指针to。
语法:
#include <string.h>
char *strcpy( char *to, const char *from );
strcpy和memcpy主要有以下3方面的区别。
- 复制的内容不同。strcpy只能复制字符串,而memcpy可以复制任意内容,例如字符数组、整型、结构体、类等。
- 复制的方法不同。strcpy不需要指定长度,它遇到被复制字符的串结束符"\0"才结束,所以容易溢出。memcpy则是根据其第3个参数决定复制的长度。
- 用途不同。通常在复制字符串时用strcpy,而需要复制其他类型数据时则一般用memcpy。
memmove
作用: 与mencpy相同,不同的是当to 和 from 重叠,函数正常仍能工作
语法:
#include <string.h>
void *memmove( void *to, const void *from, size_t count );
memset
作用:函数拷贝ch 到buffer 从头开始的count 个字符里, 并返回buffer指针。 memset() 可以应用在将一段内存初始化为某个值
语法:
#include <string.h>
void *memset( void *buffer, int ch, size_t count );
例子: memset( the_array, '\0', sizeof(the_array) );
这是将一个数组的所有分量设置成零的很便捷的方法
strcat
作用:
函数将字符串str2 连接到str1的末端,并返回指针str1.
语法:
#include <string.h>
char *strcat( char *str1, const char *str2 );
例子:
printf( "Enter your name: " );
scanf( "%s", name );
title = strcat( name, " the Great" );
printf( "Hello, %s\n", title );
strtok
作用:切割字符串,将str切分成一个个子串
语法:
#include <string.h>
char *strtok( char *str1, const char *str2 );
函数参数
函数参数:
str:在第一次被调用的时间str是传入需要被切割字符串的首地址;在后面调用的时间传入NULL。
delimiters:表示切割字符串(字符串中每个字符都会 当作分割符)
例子:
include<stdio.h>
#include<string.h>
int main(void)
{
char buf[]="hello@boy@this@is@heima";
char*temp = strtok(buf,"@");
while(temp)
{
printf("%s ",temp);
//后面调用 输入参数NULL
temp = strtok(NULL,"@");
}
return0;
}
strtol
功能:函数返回带符号的字符串start所表示的长整型数。参数base代表采用的进制方式。指针end 指向start所表示的整型数之后的部分。如果返回值无法用长整型表示,函数则返回LONG_MAX或LONG_MIN. 错误发生时,返回零
语法
#include <stdlib.h>
long strtol( const char *start, char **end, int base );
例子:
#include <stdio.h>
#include <stdlib.h>
int main()
{
char str[30] = "2030300 This is test";
char *ptr;
long ret;
ret = strtol(str, &ptr, 10);
printf("数字(无符号长整数)是 %ld\n", ret);
printf("字符串部分是 |%s|", ptr);
return(0);
}
数字(无符号长整数)是 2030300
字符串部分是 | This is test|