字符串函数
char* strerror (int errnum); //返回错误码所对应的错误信息
必须包含的头文件:#include <stdio.h>
#include <string.h>
#include <errno.h>
char* strtok(char* string,const char* p);
//作用:例如 123456@
//string指向该字符串
//指针p中保存要断的符号,如"@."
//那么将会输出为123456 qq com
//要输出三次
strerror函数
#include <stdio.h>
#include <string.h>
#include <errno.h>
int main()
{
FILE* pf = fopen("text.txt","r");
//以读的方式打开文件名为text.txt的文件
if( pf == NULL)
{
//如果文件打开失败,就输出错误信息
printf("%s\n",strerror(errno));
return 1;
}
fclose(pf);//关闭文件
return 0;
}
//No such file or directory
//文件不存在
strtok函数
#include <stdio.h>
#include <string.h>
int main()
{
char arr[] = "123456@";
char* p = "@.";
char temp[30] = {0};
strcpy(temp,arr);
char* ret = NULL;
for(ret = strtok(temp,p); ret != NULL; ret = strtok(NULL,p))
{
printf("%s\n",ret);
}
return 0;
}
内存函数
void* memcpy(void* dest, const void* src,size_t num )
// 内存复制函数 , num为字节数
void* memmove(void* dest, const void* src, size_t num)
//在dest所指向的内存中,可以将后几个字节复制到前面中,或者复制到后面中
//例如:char arr[] = "abcdef";
//将后三个字节复制到前三个中,arr就变为"defdef";
int memcmp(const void* str1, const void* str2, size_t num)
//内存比较函数
void * memset ( void * ptr, int value, size_t num )
//内存设置函数
memcpy函数及其模拟实现
#include <stdio.h>
#include <assert.h>
#include <string.h>
void* my_memcpy(void* dest,const void* src,size_t num)
{
void* ret = dest;//保存要返回的指针
assert(dest && src);//判断是否为空
while(num--)
{
*(char*)dest == *(char*)src;
//进行强制类型转换,一个字节一个字节的复制
dest = (char*)dest + 1;
src = (char*)src + 1;
//同样地,字节一个一个的增加
}
return ret;//最后,返回指针
}
int main()
{
int arr1[10] = {1,2,3,4,5,6,7,8,9,10};
int arr2[10] = {0};
int i = 0;
//memcpy(arr2,arr1,20);
my_memcpy(arr2,arr1,20);
for(i = 0;i < 10;i++)
{
printf("%d ",arr2[i]);
}
printf("\n");
return 0;
}
memmove函数及其模拟实现
#include <stdio.h>
#include <string.h>
#include <assert.h>
void* my_memmove(void* dest, const void* src, size_t num)
{
void* ret = dest;
assert(dest && src);
if(dest < src)
{
while(num--)
{
*(char*)dest = *(char*)src;
dest = (char*)dest + 1;
src = (char*)src + 1;
}
}
else
{
while(num--)
{
*((char*)dest + num) = *((char*)src + num);
}
}
return ret;
}
int main()
{
int arr[10] = {1,2,3,4,5,6,7,8,9,10};
int* p = arr;
p = (p + 5);
int i = 0;
//memmove(arr,p,20);
my_memmove(arr,p,20);
for(i = 0; i < 10; i++)
{
printf("%d",arr[i]);
}
return 0;
}
memcpy函数
#include <stdio.h>
#include <string.h>
int main()
{
float arr1[] = { 1.0 , 2.0 , 3.0 , 4.0 };
float arr2[] = { 1.0 , 2.0 };
int ret = memcpy(arr1,arr2,8);
printf("%d\n",ret);
return 0;
}