指定された長さの文字列を別の文字列の指定された位置-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
";//
void WiFi_CFG(uint8_t *buf, uint16_t len)//
{
uint8_t date_len;
static char set_wifi_head[100] = "AT+CWJAP_DEF=\"\",\"\"\r
";
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); //
}
}