我試圖讓只是電話號碼的字符串傳遞到getPhoneNumber(char [] str),但由於某種原因,我得到一些隨機字符附加到它,每次我跑代碼,請我需要幫助。從字符串意外的返回值
源代碼
#include <stdio.h>
#include <string.h>
char* getPhoneNumber(char str[]);
int main(){
getPhoneNumber("AT+CMGR=5 \n+CMGR: \"REC READ\",\"+9349036332058\",\"samuel\",\"17/03/31,20:44:52+04\"\nHOW THINS fa OK");
return 0;
}
char* getPhoneNumber(char str[]){
char *temp = strchr(str, ',')+2;
const unsigned short len1 = strlen(temp);
printf("value in temp : %s\n\n",temp);
char *strPtr = strchr(temp, '\"');
const unsigned short len2 = strlen(strPtr);
printf("value in strPtr : %s\n\n",strPtr);
int phone_num_len = len1-len2;
char phone_num[phone_num_len];
strncpy(phone_num, temp,phone_num_len);
printf("Phone number : %s",phone_num);
}
我還打印出單個數值臨時和strPtr的進行調試,但返回的值似乎確定。 程序的輸出顯示在下圖中。
'strncpy()'儘管它的名字不是用來處理* strings *。它不關心* strings *的強制終止''\ 0''。你應該在調用之後自己添加''0''字節,或者使用其他函數。在計算結果數組的大小時,您還需要考慮該終止字節。 – pmg
但是當我嘗試在[ideone](http://ideone.com/FOQi4V)上運行它時,我得到了預期的輸出結果。 –
以文字形式發佈文字優於以文字形式發佈爲圖片。 – chux