我想将指针char* name
放入char* path
。我从scanf获得了名称的价值。有可能吗?
char* path = "/home/user/Desktop/name.jpg";
我知道这是错的,但我想让它以这种方式运作
答案 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);