c常用字符串操作练习

文章目录

          • 将一个ipv4地址转换为一个整数
          • 从一个url中截取mm_gxb=后面的值
          • 从一个文件路径中,截取文件名
          • 翻转字符串,不允许使用库函数

将一个ipv4地址转换为一个整数
#include 

//缺陷,省略数字会出错,无法检测是否合法
unsigned ipv4_to_uint(const char * ipv4)
{
	unsigned n3, n2, n1, n0;
	sscanf(ipv4, "%u.%u.%u.%u", &n3, &n2, &n1, &n0);
//	printf("%u %u %u %u\n", n3, n2, n1, n0);
	return n0 + n1 * 256u + n2 * 256u * 256u + n3 * 256 * 256*256;
}

int main()
{
	char ip[] = "255.255.255.255";
	char ip1[] = "192.168.1.1";
	printf("%#x\n", ipv4_to_uint(ip));
	printf("%u\n", ipv4_to_uint(ip1));
}


从一个url中截取mm_gxb=后面的值
#include 
#include 
void get_gxbid(const char *url, char *buf)
{
	const char * p = strstr(url, "mm_gxb=");
	strcpy(buf, p + strlen("mm_gxb="));
}
int main()
{
	char url[] = "http://www.baidu.com//mm_gxb=123fda";
	char gxbid[80];

	get_gxbid(url, gxbid);

	printf("%s\n", gxbid);
}


从一个文件路径中,截取文件名
#include 
#include 

//假定buf足够存放文件名
void get_filename(const char *path, char *buf)
{
	int path_len = strlen(path);
	int i;
	for (i = path_len - 1; path[i] != '\\'; i--)
		;//假设路径中一定含有'\\'
	strcpy(buf, path+i+1);
}

int main()
{
	char path[] = "c:\\docs\\mallocfree.txt";
	char filename[100] = { 0 };
	get_filename(path, filename);
	printf("%s\n", filename);

	return 0;
}

翻转字符串,不允许使用库函数
void swap(char *a, char *b)
{
	char t = *a;
	*a = *b;
	*b = t;
}
void reerse_str(char *str)
{
	int len = 0;
	while ('\0' != str[len])
		len++;
	for (int i = 0; i < len / 2; i++)
		swap(&str[i], &str[len - 1 - i]);
}

#include 
int main()
{
	char s[] = "hello";
	reerse_str(s);
	printf("%s\n", s);

	return 0;
}

你可能感兴趣的:(c常用字符串操作练习)