我嘗試創建兩個函數來拆分字符串成爲2部分,第一個函數我想獲取字符串「模式1」,從串行端口時RX_IN_CHR_UART
變量,填充數據像「模式1 34」,和我想要得到的「34」比較char []與字符串在C「嵌入」
此函數獲取字符串第二功能「模式1」
#define GET_MODE_X 6
#define GET_VALUE 4
const char RX_IN_CHR_UART[];
char* pod(char buf_Rx[])
{
int i=0;
char spn[GET_MODE_X]; // 7
for(i=0;i<GET_MODE_X;i++)
{
spn[i] = buf_Rx[i];
}
return Get_mode_x = spn;
}
這個函數來獲取字符串「34」
char* dop(char buf_Rx_val[])
{
int k=0;
char datasip[GET_VALUE]; //2
for(k=0;k<GET_VALUE;k++)
{
datasip[k] = buf_Rx_val[GET_MODE_X+k+1];
}
return (Get_val_mod = datasip);
}
當我嘗試比較功能dop()
使用if(dop(RX_IN_CHR_UART)=="34")
它不起作用。
if(!strcmp(mode1,pod(RX_IN_CHR_UART))) // compare "Mode 1"
{
Send_teks("Mode 1 ->:"); // send to serial port
Send_teks(pod(RX_IN_CHR_UART));
Send_Char('\n');
Send_teks("Data yang dimasukkan ->:");
Send_teks(dop(RX_IN_CHR_UART));
Send_Char('\n');
if(dop(RX_IN_CHR_UART) == "34") // doesn't work well
{
pwm_off();
LCD_command(0x85);
LCD_sendstring("Kipas off ");
Send_teks("Sukses");
Send_Char('\n');
Send_teks("Kipas Off");
Send_Char('\n');
}
}
我該怎麼用這個函數來比較dop()等於「34」?
「不起作用」沒有幫助。你需要更具體。 –
你可以使用'strcmp'。或者,相反,由於'dop'返回的指針指向堆棧中的某個東西,這是不合法的,所以您不得不先解決這個問題... – Lindydancer
您的幾個錯誤和未定義的行爲在您的碼。未定義的行爲來自於你返回函數中局部變量的指針。函數返回後,局部變量使用的內存將被系統回收,並且指向它們的指針不再有效。 –