Ответ 1
Вы можете использовать c[i]= '\0'
или просто c[i] = (char) 0
.
Пустой/пустой char является просто значением нуля, но также может быть представлен как символ с выведенным нулем.
В настоящее время я пишу небольшую программу, но я продолжаю получать эту ошибку при компиляции
ошибка: пустая константа символа
Я понимаю это, потому что я пытаюсь заменить допустимое char пустым пространством c[i]=''
, но я не смог найти другой способ его представления.
Вы можете использовать c[i]= '\0'
или просто c[i] = (char) 0
.
Пустой/пустой char является просто значением нуля, но также может быть представлен как символ с выведенным нулем.
Вы не можете хранить символ "no character" в символе - это не имеет смысла.
В качестве альтернативы вы можете сохранить символ, который имеет для вас особый смысл - например, null char '\0'
- и рассмотрите это специально.
Пустое пространство char будет ' '
. Если вы ищете нуль, это будет '\0'
.
Да, c[i]=''
недействительный код. Мы скопируем символьную константу между '
'
, например. c[i] = 'A';
char A
. но вы не пишете char между ''
.
Пустое пространство - это ничего, но предположим, что если вы хотите назначить пространство, выполните:
c[i] = ' ';
// ^ space
если требуется назначить nul char
, то выполните:
c[i] = '\0';
// ^ null symbol
Пример. Предположим, если c[]
строка (nul \0
terminated char array), если у вас есть строка. например:
char c[10] = {'a', '2', 'c', '\0'};
И вы замените второй char на пробел:
c[1] = ' ';
и если вы напечатаете его с помощью printf следующим образом:
printf("\n c: %s", c);
тогда вывод будет:
c: a c
// ^ space printed
И вы замените второй char на '\ 0':
c[1] = '\0';
тогда вывод будет:
c: a
потому что строка завершена с помощью \0
.
Чтобы представить тот факт, что значения нет, у вас есть два варианта:
1) Если весь диапазон char
имеет смысл и вы не можете зарезервировать какое-либо значение, используйте char*
вместо char
:
char** c = new char*[N];
c[0] = NULL; // no character
*c[1] = ' '; // ordinary character
*c[2] = 'a'; // ordinary character
*c[3] = '\0' // zero-code character
Тогда у вас будет c[i] == NULL
, если символ отсутствует, а иначе *c[i]
для обычных символов.
2) Если вам не нужны значения, представленные в char
, то зарезервируйте один для указания того, что это значение отсутствует, например символ '\0'
.
char* c = new char[N];
c[0] = '\0'; // no character
c[1] = ' '; // ordinary character
c[2] = 'a'; // ordinary character
Тогда у вас будет c[i] == '\0'
, если символ отсутствует и обычные символы в противном случае.
Нет такой вещи, как "пустой символ" ''
.
Если вам нужен символ пробела, который может быть представлен как пробел: c[i] = ' '
или как его восьмеричный эквивалент ASCII: c[i] = '\040'
. Если вам нужен символ NUL, c[i] = '\0'
.
Может быть полезно назначить нуль в строке, а не явно сделать некоторый индекс нулевым char '\0'
. Я использовал это для тестирования функций, которые обрабатывают строки, гарантируя, что они останутся в пределах соответствующих границ.
С
char test_src[] = "fuu\0foo";
Создает массив размером 8 со значениями:
{'f', 'u', 'u', '\0', 'f', 'o', 'o', '\0'}