可以在运行时将字符串赋值给char *

时间:2011-10-08 13:38:35

标签: c string pointers char

我可以做这样的代码:

char *p;
p = User_input;

是否可以在运行时将字符串分配给p

4 个答案:

答案 0 :(得分:1)

当然可以,但c中没有string,我认为你的意思是char *,就像

char *user_input = malloc(128);
scanf("%s", userinput);
p = user_input;

答案 1 :(得分:1)

你必须用malloc分配内存。然后,您可以使用strcpy将字符串分配给分配的内存。

答案 2 :(得分:1)

当然可以。请注意,此赋值仅将指针(地址)复制到新变量。它不会复制字符串本身。

如果这不符合您的要求,您还有其他选择:

char buf[1000];

strcpy(buf, User_input);

char *p;

p = strdup(User_input);

答案 3 :(得分:1)

避免危险buffer overflows with scanf。例如,使用fgets读取整行或scanf,并使用限制说明符"%100s"

char buffer[128];
scanf("%127s", buffer);
char* my_input = strdup(buffer);