Ich versuche, ein Token von einer Zeichenfolge zu erhalten, die durch Leerzeichen ("") begrenzt ist. Aber der folgende Code stürzt die Anwendung ab, wenn die Zeichenfolge char * ist.strtok_s stürzt Programm ab, wenn Zeichenfolge von char ist *
#include <stdio.h>
#include <string.h>
int main(){
char *str1 = "Hello World!"; //char str1[] works
char *token;
char *savePtr;
token = strtok_s(str1, " ", &savePtr);
printf("%s", token);
return 0;
}
Ich habe auch die folgenden Warnungen:
C:\Users\Haris\Desktop\C files>gcc firstProgram.c -o firstprogram.exe
firstProgram.c: In function 'main':
firstProgram.c:10:9: warning: implicit declaration of function 'strtok_s' [-Wimplicit-function-declaration]
token = strtok_s(str1, " ", &savePtr);
^
firstProgram.c:10:7: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
token = strtok_s(str1, " ", &savePtr);
Vielen Dank. Aber wie kann ich dann strtok_s verwenden, um eine Zeichenkette zu ändern? Welchen Typ sollte die Saite haben? –
* Ändern Sie eine Zeichenfolge und erhalten Sie ein Token. Zum Beispiel ist der String, mit dem ich arbeite, "echo par par". Wie kann ich diese Funktion verwenden, um "Echo" zu erhalten? –
Übergeben Sie einfach keinen Zeiger auf eine Konstante. Sie können dies tun 'char str1 [] =" Hallo Welt ";' oder wie dies 'char * ptr = strdup (" Hallo Welt ");' oder 'char buf [80]; strcpy (buf, "Hallo Welt"); '- was auch immer. Übergeben Sie einfach keinen Zeiger auf eine Konstante. –