将指定长度的字符串插入到另一个字符串的指定位置-C语言

/*******************************************************************************
* @fn      Insert_String 
*
* @brief   将指定长度的字符串插入到另一个字符串的指定位置
*
* @param   oldstr 旧字符串; instr[] 插入的字符串;location 插入的位置; length 插入的数据长度
*
* @return  no
*******************************************************************************/
void Insert_String(char *oldstr, char instr[], int location, uint8_t length)
{
	int  j, k;
	char dat_tmp[100];
	
	for(j=0; j

举例:字符串中存放着wifi密码和账号,需要修改字符串中的密码和账号

char set_wifi[100] = "AT+CWJAP_DEF=\"wifi_name\",\"wifi_pswd\"\r\n";//要改动的字符串

void WiFi_CFG(uint8_t *buf, uint16_t len)//从串口中收到数据后调用此函数
{
     uint8_t date_len;
     static char set_wifi_head[100] = "AT+CWJAP_DEF=\"\",\"\"\r\n";
     char set_wifi_name[20], set_wifi_pswd[20];
     static uint8_t name_date_len, pswd_date_len;//wifi名称长度,密码长度

     date_len = len;
     memcpy(Wireless_Data_BLE.RX_data, buf, date_len);//Wireless_Data_BLE.RX_data存放从蓝牙串口收到的数据
    
     if(Wireless_Data_BLE.RX_data[0] == 'W')//配置wifi名称
     {
		memcpy(set_wifi_name, Wireless_Data_BLE.RX_data+2, date_len-2);//复制wifi名字到数组中
		name_date_len = date_len-2;//2是帧头长度
		Insert_String(set_wifi_head, set_wifi_name, 15, name_date_len);//插入wifi名字到数组中
		//Ble_REC_Flag.wifi_name_ok = 1;
	}
	else if(Wireless_Data_BLE.RX_data[0] == 'P')//配置wifi密码
	{
		memcpy(set_wifi_pswd, Wireless_Data_BLE.RX_data+2, date_len-2);//复制wifi密码到数组中
		pswd_date_len = date_len-2;//2是帧头长度
		Insert_String(set_wifi_head, set_wifi_pswd, 18+name_date_len, pswd_date_len);//插入wifi密码到数组中
		//Ble_REC_Flag.wifi_pswd_ok = 1;
		
		memset(set_wifi, 0, sizeof(set_wifi)); //清空wifi信息
		strcpy(set_wifi, set_wifi_head);//更新wifi信息
	}
			
	memcpy(Wireless_Data_BLE.TX_data, Wireless_Data_BLE.RX_data, date_len);//回馈用
	Wireless_Data_BLE.TX_length = date_len;
	
        memset(Wireless_Data_WiFi.RX_data, 0, date_len); //清空接收

  }     
}


 

你可能感兴趣的:(C,DAY,TIME)