C语言 strstr语句使用中对0x00000000<NULL>有感,以及如何输出整段的字符串

今天在看正点原子stm32第92讲,关于GPS定位模块的例程的时候,用到了strstr,该语句的说明如下:

1. strstr

strstr(str1,str2) 函数用于判断字符串str2是否是str1的子串。如果是,则该函数返回str2在str1中首次出现的地址;否则,返回NULL。

以上摘自百度百科:https://baike.baidu.com/item/strstr/811469?fr=aladdin

该语句的头文件为string.h

unsigned char *p = "$GPGSV123123" ;
unsigned char *rut = NULL ;
rut = strstr(p, "NO!");

设置中断点观察rut结果为:

0x00000000<NULL>

如果判断rut是否为空,应该使用

if(rut == NULL)
卡在这里很久是因为使用了
*rut==NULL
实际上0x00000000本身就代表空,其没有指向的内容,所以使用上一行命令是错误的。




2. 如何输出整段char字符串

关于输出整段字符串,贴上整段代码,在注释中有说明:

void main()
{
	u8 *x = "12.34567,", *p = "$111GPGSV,546,ASDIOJF,1";
	u8 comma_No = 1;
	data = x;
	u8* dx = "3";
	
	unsigned char num_comma = NMEA_Comma_Pos(x, comma_No);
	printf("第%d个逗号的位置是 %d\n", comma_No, num_comma);
	//printf("data = %c\n", *data);	//输出首字符
	//printf("data = %s\n", data);	//输出字符串

	//int y = NMEA_Str2num(x, dx);
	u8 * p1 = (u8*)strstr(p, "GPGSV");

	if (p1 != NULL)	
	{
		printf("p1 = %c\n", *p1);	//输出p1首地址指向的内容	
		printf("p1 = %s\n", p1);	//输出p1后的整段字符串
	}
	else printf("没有该字段\n");
	
	system("pause");
}



结语

初学者的体悟,如果有错误请指正 ,谢谢!!





初学者的体悟,如果有错误请指正。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值