gpt4 book ai didi

C 字符串在一个函数中是正确的,在另一个函数中转储垃圾

转载 作者:太空狗 更新时间:2023-10-29 15:53:22 28 4
gpt4 key购买 nike

这是我的代码

#include <stdio.h>

void abc(char *text);

int main(void)
{
char text[20];
abc(text);
printf("text in main : %s\n",text);
return 0;
}

void abc(char *text)
{
text = "abc";
printf("text in abc function : %s\n",text);
}

这是输出。

text in abc function : abc
text in main : ฬฬฬฬฬฬฬฬฬฬฬฬฬฬฬฬฬฬฬฬฬฬฬฬ๑ป ๚

我的问题是:

  1. 为什么main函数中的text变量和abc函数中的不一样?
  2. 我尝试更改为在 abc 函数中使用 scanf,它起作用了!有相同的。为什么?
  3. 如何修改代码使其工作。我的意思是从问题 1 来看,make main 函数和 in abc 函数是一样的吗?

最佳答案

调用函数时:

 abc(text);

制作了指针text 的副本,这个指针是函数abc() 中使用的指针。所以当你说:

text = "abc";

您正在更改副本,而不是 main 中的副本。

此外,您通常不能在 C 语言中分配字符串 - 您必须改用 strcpy() 等库函数。要使您的代码正常工作,您需要更改:

 text = "abc";

到:

 strcpy( text, "abc" );

关于C 字符串在一个函数中是正确的,在另一个函数中转储垃圾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5950686/

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