C конец строки char - PullRequest
       44

C конец строки char

1 голос
/ 20 августа 2011

У меня эта проблема.

char buffer[100];
buffer[0] = "\n";

По какой-то причине следующее утверждение верно

buffer[0] == 'T'

Когда это должно быть "\ n" ascii. Почему?

Ответы [ 3 ]

7 голосов
/ 20 августа 2011

"\n" - это строка C, то есть char *, указывающая на завершенную нулем серию char элементов. Ваша программа берет адрес этой строки и сохраняет младшие 8 бит в buffer[0]. В вашем случае это код ASCII для T.

Попробуйте следующее:

char buffer[100];
buffer[0] = '\n';

'\n' является литералом char, поэтому он будет вести себя как ожидалось.

1 голос
/ 20 августа 2011

Отредактировано: я понял неправильно. Ваш код должен быть переписан в следующий код:

char buffer[100]={0};<br> buffer[0]= '\n';

0 голосов
/ 20 августа 2011

Попробуйте *buffer[0] = '\n'. Я думаю, что это дало бы вам желаемый результат, поскольку char вы присваиваете string. Для string используйте двойные кавычки и для char одинарные кавычки.

Как правильно указано в комментарии, buffer[0] - это указатель на символ, поэтому сначала для него также необходимо выделить память. calloc будет лучшим выбором, так как он будет назначать значения по умолчанию 0, тогда как malloc будет просто выделять пространство, содержащее значения мусора.

...