Может присвоить строку символу * во время выполнения

#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);