Worin besteht das Problem mit dem folgenden Codefragment? es schlägt in Zeile 25 fehl. Ich verstehe nicht, warum es scheitert.STRTOK schlägt trotz ordnungsgemäßem Aufruf fehl
#include <stdio.h>
#include <string.h>
char linebuf[1024]="SET SLMSRVR 10.133.2.102: 50011";
char *tempStr;
char *str;
int main()
{
tempStr = calloc(1024, sizeof(char));
strcpy(tempStr, linebuf+strlen("SET SLMSRVR"));
printf("1 tempStr: %s\r\n", tempStr);
str = strtok(tempStr, ":");
printf("2 tempStr: %s\tstr: %s\r\n", tempStr, str);
if (str != NULL){
printf("Server IP: %s\r\n",str);
} else {
printf("Error 1\r\n");
}
str = strtok(tempStr, NULL);
printf("3 tempStr: %s\tstr: %s\r\n", tempStr, str);
if (str != NULL) {
printf("Port: %s\r\n", str);
}
return 0;
}
Hier wie die Spezifikation von strtok schlägt vor, zuerst wird es mit Trennzeichenfolge genannt und dann mit NULL
, erste Argument in beiden Fällen die Zeichenfolge analysiert werden. Es kann nicht zum zweiten Mal analysiert werden.
Irgendwelche Gedanken?
Und wir sollen Linie 25 # zählen? –