Ich versuche, nur die Telefonnummer aus der Zeichenfolge in getPhoneNumber (char [] str), aber aus irgendeinem Grund, bekomme ich einige zufällige Zeichen jedes Mal, wenn ich laufe der code, bitte ich brauche hilfe.Unerwarteter Rückgabewert von String
Quellcode
#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);
}
ich auch einzelne Werte von Temp und StrPtr für Debugging-Zwecke ausgedruckt, aber die zurückgegebenen Werte scheint ok. Die Ausgabe des Programms wird in der Abbildung unten gezeigt.
'strncpy()' trotz seines Namens wurde nicht entworfen, um mit * Strings * zu arbeiten. Es ist nicht wichtig, dass das abschließende '\ 0'' für * Strings * obligatorisch ist. Sie sollten das Byte selbst nach dem Aufruf hinzufügen oder eine andere Funktion verwenden. Sie müssen dieses abschließende Byte bei der Berechnung der Größe des Ergebnisarrays berücksichtigen. – pmg
aber wenn ich es auf [ideone] (http://ideone.com/FOQi4V) laufen lasse, bekomme ich die erwartete Ausgabe. –
Post-Text als Text wird gegenüber dem Buchungstext als Bild bevorzugt. – chux