Это невозможно хранить переменную строку в char
. Так как char
способен хранить один байт, а то, что вы пытаетесь сохранить, - это строка из n
байт.
Вместо этого вы можете использовать указатель, чтобы сделать это:
char array[] = "My Name";
char *ptr = array;
Теперь, если вы хотите "y Name"
только, только увеличиваем ptr
1, т.е. ptr++;
и теперь, если вы печатаете ptr
с помощью printf
вы получите "y Name"
.
ПРИМЕЧАНИЕ: Вы также можете использовать char *ptr = "My Name";
, но проблема в том, что это будет хранить строку "My Name"
в только для чтения местоположения, т.е. ptr
будет указывать на неизменяемое место.
Итак, в заключение, вы не можете сделать что-то подобное: ptr[0] = 'B';
однако вы можете сделать ptr++;
EDIT: В ответ на комментарий по Jason Marks:
Вы можете сделать что путем замены последнего символа на символ \0
, то есть
ptr[strlen(ptr) - 1] = '\0';
Символ может содержать только один символ. То, что вы пытаетесь сделать, не имеет смысла. – Mat
подумайте, что вы смущены тем, что такое _char_. Тип _char_ способен хранить только одиночные символы, поэтому myname является char []. также _array of char_ является нормальной строкой в c .. – amdixon
@amdixon О, ладно, я понял. Как я могу напечатать все «Джейсон Маркс» с помощью printf? Когда я пытаюсь распечатать его, я получаю только один символ, используя указатель [location] –