gpt4 book ai didi

c - strcpy 时出现段错误

转载 作者:行者123 更新时间:2023-11-30 18:31:29 30 4
gpt4 key购买 nike

这是我正在处理的相关代码。我对来自标准输入的输入进行标记化,没有任何问题,当我去复制该输入时,我遇到了段错误。但是,我没有遇到“strcpy(s,input)”的段错误。我在这里错过了一些基本的东西吗?谢谢

char *s = malloc(64 * sizeof(char));
char *token = malloc(64 * sizeof(char));
char *currstring = malloc(128 * sizeof(char));
currstring = NULL;
fgets(input,100, stdin);
strcpy(s, input);
token = strtok(s,delim);

while (token)
{
//Condition checking
strcpy(currstring,token);
}

最佳答案

char *currstring = malloc(128 * sizeof(char));
<strike>currstring = NULL;</strike>

您分配了内存,但随后立即丢弃它并将指针设置为 NULL。去掉第二行。

如果您尝试将其设置为空字符串 ( "" ),请改为:

currstring[0] = '\0';
// or
strcpy(currstring, "");

但这可能没有必要。您不需要将字符串设置为 ""如果你要做 strcpy()稍后。

<罢工>

<罢工>
char *token = malloc(64 * sizeof(char));

<罢工>

您也不需要为 token 分配内存。 strtok()将导致token指向 s 内的某处,因此为 token 分配内存一旦你这样做,就会简单地泄漏内存 token = strtok(s, delim); .

关于c - strcpy 时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22517739/

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