这是我的代码
#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 : ฬฬฬฬฬฬฬฬฬฬฬฬฬฬฬฬฬฬฬฬฬฬฬฬ๑ป ๚
我的问题是:
abc
函数中的text变量不一样?scanf
函数中使用abc
并且它有效!有相同的。为什么?答案 0 :(得分:13)
调用该函数时:
abc(text);
指针text
的副本,该指针是函数abc()
中使用的指针。所以当你说:
text = "abc";
您要更改副本,而不是main
中的副本。
此外,您通常不能在C中分配字符串 - 您必须使用像strcpy()
这样的库函数。要使代码正常工作,您需要更改:
text = "abc";
为:
strcpy( text, "abc" );
答案 1 :(得分:-3)
你不能只是printf("text in main : %s\n",text);
它在C中没有任何意义,你可以使用像strcpy()
这样的函数来获取每个字符,将它们组织成 String < / em> !或者定期循环并在阵列上运行它并且没有空间打印器官。
int i;
for (i=0 ; i<strlength(text);i++)
{
printf ("%d",text[i]);
}