#c #string #pointers #char
#c #строка #указатели #символ
Вопрос:
Могу ли я сделать такой код:
char *p;
p = User_input;
Возможно ли присвоить строку p
во время выполнения?
Комментарии:
1. Вы можете
p
указать на существующую строку, установивp
значение, равное указателю на первый символ этой строки. Но прежде чем вы сможете получить пользовательский ввод, вам, вероятно, потребуется выделить некоторую память для ввода.
Ответ №1:
Конечно, вы можете, но string
в c нет, я думаю, вы имеете в виду char *
, например
char *user_input = malloc(128);
scanf("%s", userinput);
p = user_input;
Ответ №2:
Вы должны выделить память с помощью malloc . Затем вы можете использовать strcpy для присвоения строки выделенной памяти.
Ответ №3:
Конечно, вы можете. Обратите внимание, что это присвоение копирует только указатель (адрес) на новую переменную. Он не копирует саму строку.
У вас есть другие варианты, если это не то, что вы улучшаете:
char buf[1000];
strcpy(buf, User_input);
или
char *p;
p = strdup(User_input);
Ответ №4:
Чтобы избежать опасных переполнений буфера с помощью scanf. Используйте fgets для чтения всей строки или scanf "0s"
, например, со спецификатором limit .
char buffer[128];
scanf("7s", buffer);
char* my_input = strdup(buffer);