我想了解如何使此代码正常工作,我在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/

10-12 12:46
查看更多