C语言中对字符串的操

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhejfl/article/details/79520024

最近对于C语言接收到的数据(字符串)处理比较多。

字符串:零个或多个字符组成的有限序列。假设:S="abcd1234efghmn",其中S是串口,字符串中的字符可以是字符、数字或其他字符。

#include <string.h>

#include <stdio.h>

C ANSI 对于C的操作有

复制字符串

char *strcpy(char* dest, const char *src);//把从str地址开始包含有NULL(\0)结束符的字符串复制到dest开始的地址空间

char* strncpy(char* dest,char *src,size_t n); //把从str地址开始前n个字符(不含NULL)字符(n<sizeof(src)

字符串长度

unsigned int strlen(char *s); //计算给定字符串的长度,不包括'\0'在内。

从字符串中查找指定字符

char *strchr(const char *s,char c); 字符串s中首次出现字符c的地址---正向

char *strrchr(const char *str, char c);字符串s中首次出现字符c的地址---反向

从字符串中查找子串

char *strstr(char *str1, const char *str2);//若str2是str1的子串,则返回str2在str1的首次出现的地址;如果str2不是str1的子串,则返回NULL。

附加子串到目标字符串

 char *strcat(char *dest, const char *src);

char * strcat(char *dest, const char *str,size_t n);

比较字符串

int strcmp(const char *s1, const char *s2);


字符串到数值类型的转换

int atoi(const char *nptr);  //字符串转换成整数

double atof(const char *nptr);//字符串转换成浮点数

long atof(const char *nptr); //字符串转换成长整数


double strtod(const char *nptr, char **endptr);  //将字符串装换成浮点数,会扫描参数nptr字符串,跳过前面的空格字符,直到遇到数字或正负符号才开始做转换,到出现非数字或字符串结束时('\0')才结束转换,并将结果返回。


举个栗子:

{

char buf[] = "http://www.fangle.com/postedit/emmidt:80"

char PA=NULL;

char PB=NULL;

        char PC=NULL;

int port = 0;

char host[128] = {0};

PA = buf;

if(!strncmp(PA,"http://",strlen("http://")))

PA = buf+strlen("http://");

PB = strchr(PA,':');

if(PB)

port = *atoi(PB+1);

else

prot = 80;

memcpy(host, PA, strlen(PA)-strlen(PB));

host[ strlen(PA)-strlen(PB)] = ‘\0’;

}

对比strcpy和memcpy

函数void * memcpy(const void *dest, const void *src, size_t size)

src指向内存块的数据拷贝size个数据到dest指向的内存块.

即memcpy对于需要复制的内容没有限制,因此用途更广——一般内存的复制


char *strcpy(char * dest, const char *src) 实现src到dest的复制 遇到/0结束。









猜你喜欢

转载自blog.csdn.net/zhejfl/article/details/79520024