2012-08-12 4 views
5

char * 배열의 null 종결 문자를 확인하는 방법을 보려고했지만 실패했습니다. 각 요소를 계속 확인하면서 for 루프 프로 시저를 사용하여 길이를 찾을 수 있지만 while 루프를 사용하고 null 종료 문자열을 찾고 싶습니다. 루프를 마치면 while 루프를 종료 한 적이없는 것 같습니다. 왜 그렇게 된거 야?null에서 종료 문자를 확인하십시오. char *

char* forward = "What is up"; 
int forward_length = 0; 
while (*(forward++)!='/0') { 
    forward_length++; 
    printf("Character %d", forward_length); 
} 
+12

다중 문자 상수에 대한 경고가 표시 되었습니까? ' '/ 0' '이 아닌' '\ 0' '이 아닌 잘못된 슬래시를 사용하고 있습니다. – Musa

+0

forward_length를 선언하면 레지스터 클래스가 유용 할 수도 있습니다. – Ram

답변

23

당신은 '/0' 대신 '\0' 사용하고 있습니다. 이것은 올바르지 않습니다. '\0'은 null 문자이고 '/0'은 다중 문자 리터럴입니다.

또한, C에서 당신의 상태에 0을 건너 OK입니다 :

while (*(forward++)) { 
    ... 
} 

가 제로이기 위해 등을 문자, 정수, 포인터를 확인하는 유효한 방법입니다.

14

null 문자가 '\0'이 아니라 '/0'이 아닙니다.

while (*(forward++) != '\0') 
6

당신의 '/0''\0'을해야합니다 .. 당신이있어 슬래시가 잘못된 길을 기대어/반전. 귀하의 while가 보일 것 같은 :

while (*(forward++)!='\0') 

루프가 오래가로 평가 계속 이후 표현의 != '\0' 부분은 여기에 선택 사항입니다하지만 비 제로 (널 (null)이 제로 간주되며 루프를 종료합니다) .

모든 "특별한"문자 (즉, 인쇄 할 수없는 문자에 대한 escape sequences는) 그래서 기억하기 쉽게 같은 탭 '\t', 또는 개행 '\n' 및 널 (null) '\0'에 대해 동일하게 백 슬래시를 사용합니다.

6

다른 사람들이 귀하의 문제를 해결하는 동안 : 나는 당신에게 좋은 조언을 드릴 것입니다 : 바퀴를 다시 열지 마십시오.

size_t forward_length = strlen(forward); 
+0

이 size_t 논리를 어떻게 사용합니까? – vkaul11

+0

@ vkaul11 "이 size_t 논리"를 사용한다는 것은 무엇을 의미합니까? –

+0

@ H2CO3 죄송합니다. 그러나 미리 정의 된 함수에 대한 코드를 작성하는 것이 좋습니다. –

관련 문제