Programing

빈 문자를 어떻게 표현합니까?

crosscheck 2020. 12. 7. 07:51
반응형

빈 문자를 어떻게 표현합니까?


현재 작은 프로그램을 작성하고 있지만 컴파일 할 때이 오류가 계속 발생합니다.

오류 : 빈 문자 상수

유효한 문자를 빈 공간으로 바꾸려고 c[i]=''했지만 다른 방법으로 표현할 수 없었기 때문이라는 것을 알고 있습니다.


당신은 사용할 수 있습니다 c[i]= '\0'하거나 c[i] = (char) 0.

null / 빈 문자는 단순히 0의 값이지만 이스케이프 된 0이있는 문자로 표시 될 수도 있습니다.


문자에 "문자 없음"을 저장할 수 없습니다. 말이 안됩니다.

대안으로 당신에게 특별한 의미를 가진 문자 (예 : null char)를 저장 '\0'하고 이것을 특별히 취급 할 수 있습니다.


빈 공간 문자는입니다 ' '. null을 찾고 있다면 '\0'.


예, c[i]=''유효한 코드가 아닙니다. ' '예를 들어 c[i] = 'A';char 사이에 문자 상수를 괄호로 묶습니다 A. 하지만 사이에 문자를 쓰지 않습니다 ''.

빈 공간은 아무것도 아닙니다. 공간을 할당하려면 다음을 수행하십시오.

c[i] = ' ';
//      ^  space 

할당하려면 nul char다음을 수행하십시오.

c[i] = '\0';
//       ^ null symbol 

예 : c[]문자열 있는 경우 문자열 (nul로 \0끝나는 char 배열)이 있다고 가정 합니다. 예를 들면 :

char c[10] = {'a', '2', 'c', '\0'};

그리고 두 번째 문자를 공백으로 바꿉니다 .

c[1] = ' ';

다음과 같이 printf를 사용하여 인쇄하는 경우 :

printf("\n c: %s", c);

출력은 다음과 같습니다.

  c:  a  c
//      ^ space printed 

그리고 두 번째 문자를 '\ 0'으로 바꿉니다 .

c[1] = '\0';

출력은 다음과 같습니다.

  c:  a

문자열이 \0.


"빈 문자"와 같은 것은 없습니다 ''.

공백 문자가 필요한 경우 공백 : c[i] = ' '또는 해당 ASCII 8 진수 :으로 표시 할 수 있습니다 c[i] = '\040'. NUL 문자가 필요한 경우 c[i] = '\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'캐릭터가 없을 때를 위해, 그렇지 않으면 일반 캐릭터를 갖게 됩니다.


It might be useful to assign a null in a string rather than explicitly making some index the null char '\0'. I've used this for testing functions that handle strings ensuring they stay within their appropriate bounds.

With:

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

This creates an array of size 8 with values:

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

There are two ways to do the same instruction, that is, an empty string. The first way is to allocate an empty string on static memory:

char* my_variable = "";

or, if you want to be explicit:

char my_variable = '\0';

The way posted above is only for a character. And, the second way:

#include <string.h>
char* my_variable = strdup("");

Don't forget to use free() with this one because strdup() use malloc inside.

참고URL : https://stackoverflow.com/questions/18410234/how-does-one-represent-the-empty-char

반응형