Подтвердить что ты не робот

Как представить пустой char?

В настоящее время я пишу небольшую программу, но я продолжаю получать эту ошибку при компиляции

ошибка: пустая константа символа

Я понимаю это, потому что я пытаюсь заменить допустимое char пустым пространством c[i]='', но я не смог найти другой способ его представления.

4b9b3361

Ответ 1

Вы можете использовать c[i]= '\0' или просто c[i] = (char) 0.

Пустой/пустой char является просто значением нуля, но также может быть представлен как символ с выведенным нулем.

Ответ 2

Вы не можете хранить символ "no character" в символе - это не имеет смысла.

В качестве альтернативы вы можете сохранить символ, который имеет для вас особый смысл - например, null char '\0' - и рассмотрите это специально.

Ответ 3

Пустое пространство char будет ' '. Если вы ищете нуль, это будет '\0'.

Ответ 4

Да, 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.

Ответ 5

Чтобы представить тот факт, что значения нет, у вас есть два варианта:

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', если символ отсутствует и обычные символы в противном случае.

Ответ 6

Нет такой вещи, как "пустой символ" ''.

Если вам нужен символ пробела, который может быть представлен как пробел: c[i] = ' ' или как его восьмеричный эквивалент ASCII: c[i] = '\040'. Если вам нужен символ NUL, c[i] = '\0'.

Ответ 7

Может быть полезно назначить нуль в строке, а не явно сделать некоторый индекс нулевым char '\0'. Я использовал это для тестирования функций, которые обрабатывают строки, гарантируя, что они останутся в пределах соответствующих границ.

С

char test_src[] = "fuu\0foo";

Создает массив размером 8 со значениями:

{'f', 'u', 'u', '\0', 'f', 'o', 'o', '\0'}