Вы не можете ничего присвоить массиву, которым является ваша переменная x
. Поэтому все, что начинается с x =
, неверно. Во-вторых, 'hello'
- это не строка, это литерал с несколькими символами типа int
, так что это тоже не имеет смысла. Строковый литерал заключен в "
, тогда как символьные (или многозначные) литералы заключены в '
.
Поэтому, если вы хотите заполнить свой буфер x
строкой "hello", вы используете strncpy
или даже лучше strlcpy
, если доступно:
strncpy( x, "hello", sizeof( x ) );
strlcpy( x, "hello", sizeof( x ) );
Функция strlcpy
лучше, потому что она всегда завершает строку символом nul
.
Если вы хотите очистить его, вы можете сделать то, что предложили другие ответы. Я бы предложил использовать strncpy
или strlcpy
с пустой строкой, как предложено @codaddict. Это код, который наиболее очевидно говорит «эй, я хочу очистить эту строку». Если вы хотите удалить все содержимое строки из памяти (например, если она содержит пароль или что-то в этом роде), используйте memset
, как @Ken и @Tom предложили.
Также обратите внимание, что вы никогда не используете такие функции, как strcpy
или strcat
, которые не принимают размер выходного буфера в качестве параметра. Они действительно небезопасны и вызывают неприятные ошибки и уязвимости в безопасности. Даже не используйте их, если вы знаете, что ничто не может пойти не так, просто привыкните использовать безопасные функции.