C语言 —— 获取字符串中两个字符之间的的数据

问题描述:获取字符串中两个字符之间的数据。最近写SMTP代理,需要获取发送方与接收方的邮件名称。

字符串为 “MAIL FROM:<test1@163.com>\r\n” , 获取字符':'冒号和字符'\r'之间的值 <test1@163.com>

/*C获取字符串中两个字符之间的的数据*/
#include <stdio.h>
#include <string.h>
#define SUCCESS 0

int test(char *pcBuf, char *pcRes)
{
	char *pcBegin = NULL;
	char *pcEnd = NULL;

	pcBegin = strstr(pcBuf, ":");
	pcEnd = strstr(pcBuf, "\r");

	if(pcBegin == NULL || pcEnd == NULL || pcBegin > pcEnd)
	{
		printf("Mail name not found!\n");
	}
	else
	{
		pcBegin += strlen(":");
		memcpy(pcRes, pcBegin, pcEnd-pcBegin);
	}

	return SUCCESS;
}

int main()
{
	char cBuf[40960] = {"MAIL FROM:<test1@163.com>\r\n"};
	char cRes[40960] = {0};	

	test(cBuf, cRes);

	printf("%s\n", cRes); 
	return SUCCESS;
}
[root@localhost test]# ./strncmp
<test1@163.com>

 

  • 11
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
C语言字符串数组实际上是一个二维字符数组,每个字符串都是一个字符数组。要获取字符串数组每个元素(即每个字符串)的长度,你可以使用循环结构和`strlen`函数来逐个获取每个字符串的长度。 以下是一个示例代码,演示了如何获取字符串数组每个元素的长度: ```c #include <stdio.h> #include <string.h> int main() { char strArray[][20] = {"Hello", "World", "C", "Programming"}; int lengthArray[sizeof(strArray) / sizeof(strArray[0])]; for (int i = 0; i < sizeof(strArray) / sizeof(strArray[0]); i++) { lengthArray[i] = strlen(strArray[i]); } for (int i = 0; i < sizeof(strArray) / sizeof(strArray[0]); i++) { printf("字符串 \"%s\" 的长度为:%d\n", strArray[i], lengthArray[i]); } return 0; } ``` 上述代码,我们声明了一个字符串数组`strArray`,其包含了多个字符串(每个字符串的最大长度为19)。然后,我们声明了一个整型数组`lengthArray`,用于存储每个字符串的长度。 通过使用两个循环,我们遍历整个字符串数组。在第一个循环,我们使用`strlen`函数获取每个字符串的长度,并将其存储到`lengthArray`。在第二个循环,我们打印出每个字符串及其对应的长度。 运行该程序会输出: ``` 字符串 "Hello" 的长度为:5 字符串 "World" 的长度为:5 字符串 "C" 的长度为:1 字符串 "Programming" 的长度为:11 ``` 这样,你就可以获取字符串数组每个元素的长度了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值