char ch[2];
ch[0] = 'h';
ch[1] = '\0';
또는 난 그냥정확한 길이의 문자 배열을 C로 초기화 하시겠습니까?
char ch[1];
ch[0] = 'h';
을 할 수는있는 '0 \'을 이미 암시 할 것인가?
내가 이런 식으로하는 이유는 내 프로그램이이 문자를 끊임없이 변경하고 더 긴 문자열로 연결하는 루프를 가지고 있기 때문입니다.
char ch[2];
ch[0] = 'h';
ch[1] = '\0';
또는 난 그냥정확한 길이의 문자 배열을 C로 초기화 하시겠습니까?
char ch[1];
ch[0] = 'h';
을 할 수는있는 '0 \'을 이미 암시 할 것인가?
내가 이런 식으로하는 이유는 내 프로그램이이 문자를 끊임없이 변경하고 더 긴 문자열로 연결하는 루프를 가지고 있기 때문입니다.
ch[0]
만 지정하면 ch[1]
에 0이 할당되지 않습니다.
char ch[2] = "h";
이 ch[0]
에 'h'
을 넣어 것, 그리고 ch[1]
에 제로를 종료 : 당신은이 같은 한 줄의 문자열 리터럴과 배열에 문자를 모두 초기화 할 수 있습니다.
원하는 경우 널 문자는 생략 할 수 있지만 strlen
과 같이 종료 널 문자가 필요한 기능은 사용할 수 없습니다.
글쎄,이 단일 문자 문자열을 계속 사용하려는 경우 하나의 옵션은 null을 한 번만 초기화하는 것입니다. 그럼 당신은 오직 첫 번째 문자 변경해야합니다 : 두 번째 경우
char ch[2] = {0};
ch[0] = 'h';
을, 당신은 배열을 선언 할 필요가 없습니다
char ch = 'h';
을하지만 당신은 문자열로 그것을 사용할 수 없습니다 . 단일 문자 '배열'에는 함축 된 null 문자가 없습니다.
문자열 대신 문자열에 문자를 추가 할 수없는 이유는 무엇입니까? 이것이 뭔지 알고 싶다면 strcat
이 필요하지 않습니다. 끝나고 null을 추가 할 때까지 계속해서 하나의 문자를 계속 추가 할 수 있습니다.
char somestring[100];
char pos = 0;
while(...) {
somestring[pos] = 'x'; /* or whatever */
pos = pos + 1;
}
somestring[pos] = 0;
ch
는 문자 배열이 아닌 문자열이다.
'\0'
을 추가하는 경우에만 컴파일러에서이를 문자열로 인식 할 수 있습니다. 그러나, 그것을 char 배열로 인식 할 수는 없다.
그래서, 당신은 당신이 이런 식으로 할 수 있으며, '\0'
추가해야합니다
int ind=0;
while(...)
{
ch[ind++]='h';
}
ch[ind]='\0';
C에는 문자열이 없으며 문자열로 처리 할 수있는 char 배열 만 있습니다. ** 컴파일러 **는 char 배열이 무엇을 포함하고 있는지에 관계없이 문자열로 인식하지 않습니다. 아마도 "구현"또는 "C 라이브러리"를 의미 할 것입니다. 그리고 루프는 OP의 질문에 적용되지 않습니다. 이것은 단일 문자 또는 길이가 1 인 문자열에 관한 것입니다. –
, 문자열의 끝을 의미 O'은'\ 그래서 때마다'의 printf ("% s '에, 채널);' 그 기능을 검색합니다. –