如何将指向 char 的指针放入另一个指向 char 的指针
How to put pointer to char into another pointer to char
我想将指针 char* name
放入 char* path
。我从 scanf 得到 name 的值。可能吗?
char* path = "/home/user/Desktop/name.jpg";
我知道这是错误的,但我希望它以这种方式工作
您可以使用几个函数复制字符串。首先想到的是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);
我假设你的意思是你有:
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"
我想将指针 char* name
放入 char* path
。我从 scanf 得到 name 的值。可能吗?
char* path = "/home/user/Desktop/name.jpg";
我知道这是错误的,但我希望它以这种方式工作
您可以使用几个函数复制字符串。首先想到的是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);
我假设你的意思是你有:
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"