2013-11-10 3 views
0

Так что я хочу знать, как хранить фактический символ в массиве.Как сохранить фактический символ в массив?

char arr[4] = "sup!"; 
    char backwards[4]; 
    backwards[0] = *(arr + 3); 

Я думаю, мой второй вопрос, если я сделаю это, буду, если я подскажу Printf из задом наперед [0], используя% С, появится фактический характер?

+2

Да. 'printf ("% c ", назад [0]);' будет печатать '!' Почему бы не попробовать? –

+0

Не уверен ... я должен, я получаю странную ошибку при создании программы, поэтому я подумал, может быть, это поможет, но ваше право я мог бы просто сделать это, спасибо. – Bourezg

ответ

2

Во-первых, давайте исправим проблему размера массива:

Символьные массивы в 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 должен сделать трюк.

Смежные вопросы