如何将指向char的指针放入另一个指向char的指针

时间:2015-01-02 21:50:40

标签: c pointers char

我想将指针char* name放入char* path。我从scanf获得了名称的价值。有可能吗?

char* path = "/home/user/Desktop/name.jpg"; 

我知道这是错的,但我想让它以这种方式运作

2 个答案:

答案 0 :(得分:4)

我认为你的意思是:

char *name = "fred";
char *format = "/home/user/Desktop/name.jpg";

你想接受那个然后做某事,这样你就有了结果:

char *result = "/home/user/Desktop/fred.jpg";

为此,您需要分配一些内存(或在其他地方分配足够的内存),然后使用sprintf()snprintf()

char *name   = "fred";
char *format = "/home/user/Desktop/%s.jpg";

char *result = malloc(strlen(format) - 2 + strlen(name) + 1);
sprintf(result, format, name);

printf("%s\n", result); // Output is "/home/user/Desktop/fred.jpg"

答案 1 :(得分:1)

您可以使用几个函数复制字符串。首先想到的是memcpy

char* name = "/home/user/Desktop/name.jpg"; 
char* path;

size_t len = strlen(name);
path = malloc(len + 1); /* plus 1 for the null terminator */

if(path == NULL) exit(1);

memcpy(path, name, 1 + len);

/* do whatever */

free(path);