gpt4 book ai didi

c - 当字符串为 char * 时,strtok_s 使程序崩溃

转载 作者:太空宇宙 更新时间:2023-11-04 01:52:57 26 4
gpt4 key购买 nike

我正在尝试从由空格 ("") 分隔的字符串中获取 token 。但是当字符串是 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,这是一个指向字符串常量的指针。当它试图修改该字符串以将定界符变为零时,它会尝试修改一个常量。那当然是非法的。

关于c - 当字符串为 char * 时,strtok_s 使程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40034176/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com