我想了解如何使此代码正常工作,我在main函数中的printf将不会打印“ test”字符串。
#include <stdio.h>
int main()
{
char b[10];
test(b);
printf("from main func: %s\n", b);
}
int test(char* buf)
{
char len[] = "test";
char *pt = len;
printf("printing ptr: %s\n", pt);
buf = pt;
printf("from test func: %s\n", buf);
return 1;
}
最佳答案
首先,您需要具有test
函数的原型,或者将其放置在main之上。
#include <stdio.h>
#include <string.h>
int test(char *);
int main()
{
char b[10];
test(b);
printf("from main func: %s\n", b);
}
int test(char* buf)
{
char len[] = "test";
char *pt = len;
printf("printing ptr: %s\n", pt);
strcpy(buf, pt);
printf("from test func: %s\n", buf);
return 1;
}
另外,您永远不要尝试将局部变量传递给函数。它不会起作用,因此您必须使用
strcpy(buf, pt);
而不是将局部变量len
指向buf
。关于c - 将ptr分配给char指针,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34697924/