Strtok verursacht Segfault, aber nicht, wenn Sie den Code durchlaufen
Ich bin neu in C und versuche, eine Datums- / Uhrzeitzeichenfolge in separate Variablen aufzuteilen. Wenn ich jedoch den Code in gdb Zeile für Zeile durchlaufe, funktioniert dies. Wenn ich ihn jedoch normal ohne Haltepunkte durchlaufen lasse, treten Seg-Fehler auf, und ich kann nicht erkennen, warum.
Unten ist der Code:
char * dateTimeString = "2011/04/16 00:00";
char dateVar[11];
char timeVar[6];
if (splitTimeAndDateString(dateVar, timeVar, dateTimeString))
{
exit(1);
}
printf("Date: %s\tTime: %s\n", dateVar, timeVar);
Unten ist die Funktion
int splitTimeAndDateString(char date[11], char time[6], char * dateString)
{
char *token;
token = strtok(dateString, " ");
int i = 0;
while (token != NULL)
{
if (i == 0)
{
strcpy(date, token);
}
else if (i == 1)
{
strcpy(time, token);
}
else
{
printf("Overrun date time string\n");
return 1;
}
token = strtok(NULL, " ");
i++;
}
return 0;
}
Vielen Dank für jede Hilfe, die Sie zur Verfügung stellen können.