Во-первых, давайте исправим проблему размера массива:
Символьные массивы в C являются null-terminated: Это означает, что вам нужно добавить пространство для заднего \0
прекратить вашей строки. Вы можете использовать char arr[5]
на первой строке. (Обратите внимание, что если вы ОБЯЗАТЕЛЬНО вы НИКОГДА не собираются использовать этот массив символов с любым из функций обработки C строковых И вы назначили символы человек как символы, а не как строки, это не технически необходимо, но сохраните себе время отладки и используйте дополнительный байт.) Вероятно, это источник вашей «странной ошибки».
Кажется, вы знаете, но другая вещь, о которой нужно помнить, находится в C, массивы - zero-based. Это означает, что, когда вы заявляете и массив как char arr[4]
, вы действительно получите
arr[0]
arr[1]
arr[2]
arr[3]
C не имеет постеснялся позволяя вам идти от конца вашего массива и топать на данных или читать в плохих значениях. Здесь будут драконы. Быть осторожен.
Теперь на ваших актуальных вопросов:
1) присваиваются фактические символы, используя одиночные кавычки arr[2]='x';
Если вы используете двойные кавычки, вы назначаете строку C, которая оканчивается нулем, как описано выше.
2) Да, printf
с %c
должен сделать трюк.
Да. 'printf ("% c ", назад [0]);' будет печатать '!' Почему бы не попробовать? –
Не уверен ... я должен, я получаю странную ошибку при создании программы, поэтому я подумал, может быть, это поможет, но ваше право я мог бы просто сделать это, спасибо. – Bourezg