gpt4 book ai didi

c - 接收字符串作为 void 指针参数并使用 strcpy 更改它

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

代码如下:

#include <stdio.h>
#include <string.h>

void print (void*);

int main (void)
{
char *a = "Mcwhat";
print(&a);
printf("\n%s", a);
return 0;
}

void print (void *text)
{
char* pchar[5];

*pchar = (char*)text;

strcpy( *pchar, "Mcthat" );
}

我试图使用 void 参数将 Mcwhat 变成 Mcthat,但是 printf 之后给了我一个段错误。我的错误在哪里?我设法逐个字符地完成它,但现在我想更改整个字符串。我在 C 书籍中没有找到足够的 Material 。

最佳答案

保持简单并注意变量的类型:

#include <stdio.h>
#include <string.h>

void print (void*);

int main()
{
char a[] = "Mcwhat"; // a is now a read-write array
print(a); // a decays to a pointer, don't take its adress or you'll get a pointer-to-pointer
printf("\n%s", a);
return 0;
}

void print (void *text)
{
strcpy( text, "Mcthat" ); // Don't dereference text here
}

请注意,这个“打印”功能在所有可以想象的方面都是不安全的,但这不是问题所在。

关于c - 接收字符串作为 void 指针参数并使用 strcpy 更改它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23979328/

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