[英]strtok_s crashes program when string is of char *
我試圖從一個由空格(“”)分隔的字符串中獲取一個標記。 但是當字符串是char *類型時,以下代碼會崩潰應用程序。
#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;
}
我還收到以下警告:
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);
strtok_s
函數修改指針指向的東西,將分隔符轉換為零。 所以它不能指向常量。 但是你傳遞str1
,它是一個指向字符串常量的指針。 當它嘗試修改該字符串以將分隔符轉換為零時,它會嘗試修改常量。 那當然是非法的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.