2016-07-22 6 views
1
#define _CRT_SECURE_NO_WARNINGS 
#include <stdio.h> 
#define SIZE 19 

int main() 
{ 
    char name[SIZE]; 
    int x; 
    int i; 

    printf("Enter your name: "); 

    scanf("%s", &name); 

    for (i = 1; name[i] != '\0'; i++); 
     printf("Are you sure your name is: "); 

    for (x = i - 1; x >= 0; x--) 
     printf("%c", name[x]); 
} 

온라인 9 For 문 다음에 세미콜론이 있어야하는 이유는 무엇입니까? 세미콜론없이 프로그램은 "당신의 이름이 맞습니까 : 당신의 이름은 확실합니까?"라고 인쇄합니다.C - For 루프 문 후의 세미콜론

편집 : 사람들은 중복 질문을 좋아하지 않으므로 여기에서 나는 그것을 다르게 만들고 있습니다 - 문제는 무엇이라고 생각합니까? 왜 작동하지 않습니까 ????

+0

아니요. 그게 문제 야. – evaitl

+0

당신이 무엇을 기대하는지 분명하지 않습니다. 그러나 for 뒤에는 세미콜론이 필요하지 않습니다. 세미콜론을 제거하면 NULL 문자가 배열의 세 번째 요소 (사용자가 설명하는 경우)에 있기 때문에 메시지를 두 번 인쇄합니다. 당신이 원하는 것은 무엇입니까? –

+2

이것은 버그가 아닙니다. 문자열 길이를 'i'로 계산하는 데 사용됩니다. –

답변

3

라인 name[i] 널 종결 될 때까지

for (i = 1; name[i] != '\0'; i++); 

이 루핑 [이 해결]. 이 시점에서 카운터 i은 다음 코드 줄에서 사용되는 name 문자열의 길이를 갖습니다. 코드의 유일한 문제점은 다음 줄의 들여 쓰기가 루프의 일부라고 생각하는 것입니다.

+0

"코드의 유일한 문제는 다음 줄의 들여 쓰기입니다"- 물론, strlen()을 사용하지 않고이 모든 것을 훨씬 더 명확하게 만들 이유가 없다는 것입니다. – nephtes

+0

@nephtes That 's 물론. 하지만 코드 검토를 위해 남겨 두겠습니다. –

+0

그래, 루프 이후의 print 문은 ... lol이 아니기로되어있다. 감사합니다 유진! – flamed65