2015-01-30 4 views
0

Ok 사용자로부터 두 개의 문자를 읽고 두 문자 사이에 ASCII 문자를 인쇄하는 프로그램을 만들고 있습니다. 문제는 프로그램이 실행될 때 사용자에게 첫 번째 문자를 입력하라는 메시지를 표시하고 사용자가 프로그램 입력을 마친 후에는 끝납니다. 내가 무엇이 누락 되었습니까?프로그램 도움말! 사용자 조회수가 프로그램 종료를 입력하면

#include <stdio.h> 
#include <stdlib.h> 

int main(int argc, char *argv[]){ 


     char firstchar; 
     char secondchar; 
     int variable; 
     int highest; 
     int lowest; 
     char ASCIvariable; 

     printf("Please enter a character. "); 
     scanf("%d", &firstchar); 

     printf("Please enter another character. "); 
     scanf("%d", &secondchar); 

     if(firstchar < secondchar) 
     { 
     secondchar = highest; 
     firstchar = lowest; 
     }else{ 
     firstchar = highest; 
     secondchar = lowest; 
     } 

     variable = lowest; 

     for (variable != highest; variable < highest; variable++) 
     { 
      variable = ASCIvariable; 
      printf(ASCIvariable); 
     } 

     return 0; 
} 

나는 분명히이 사이트에 코드를 게시하는 방법을 이해하지 않습니다. 나는 코드의 모든 라인 전에 수동으로 입력 된 네 공간이 필요합니까?


업데이트는 여기

#include <stdio.h> 
#include <stdlib.h> 



int main(int argc, char *argv[]) { 


    char firstchar; 
    char secondchar; 
    int variable; 
    int highest; 
    int lowest; 
    char ASCIvariable; 

    printf("Please enter a character. "); 
    scanf(" %c", &firstchar); 

    printf("Please enter another character. "); 
    scanf(" %c", &secondchar); 

    if(firstchar < secondchar) 
    { 
highest = secondchar; 
lowest = firstchar; 
} 
    else 
    { 
    highest = firstchar; 
    lowest = secondchar; 
} 

    variable = lowest; 


for (variable != highest; variable <= highest; variable++) 
    { 
     ASCIvariable = variable; 
     printf("%c ", ASCIvariable); 

    } 


    return 0; 
} 

그것은 성공적으로 사용자가 문자를 모두 입력 할 수 있습니다 후 둘 사이의 문자를 인쇄합니다 .... 현재 코드는 k는 붙여 넣기를 허용하지 않습니다 제어 할 수 있습니다. 그게 맞는 것 같니?

for (; variable <= highest; variable++) /* Should be <= */ { 
    ASCIvariable = variable; /* Reverse */ 
    printf("%c", ASCIvariable); /* %c */ 
} 

귀하의 assignations 또한 잘못된 :

if(firstchar < secondchar) 
{ 
highest = secondchar; 
lowest = firstchar; 
} 
else 
{ 
    highest = firstchar; 
    lowest = secondchar; 
} 

a = b; 수단으로 b의 내용을 복사 또한에 루프에 대한 귀하의 변경

printf("Please enter another character. "); 
scanf(" %c", &secondchar); /* Note the extra space and %d is changed to %c*/ 

:

+1

봅니다 코드하고 Ctrl + K ;-) – Eenoku

+1

을 삽입하고 코드를 포맷, 당신도 4 공백을 수동으로 추가하거나 전체 코드를 선택하고를 누를 수 있습니다 ** {} ** 버튼 또는 CTRL 충돌 + K. –

+0

확인해보십시오. – NeuromancerNoob

답변

1
은 당신의 코드를 변경

a.

+0

응답 해 주셔서 감사합니다. 나는이 코드를 바꿨다. 그것은 첫 번째 문자를 받아 들일 것이고 잠시 사용자에게 프롬프트 한 다음 작동을 멈추었다 고 말하면서 충돌합니다. – NeuromancerNoob

+0

그냥 printf ("% c", ASCIvariable) 여야합니다; ? – NeuromancerNoob

+0

@NoobNeuromancer, 네. –

1

잘못된 형식 지정자를 사용하면 UB로 이어질 수 있습니다. 당신은 %c가 개행 문자를 소비하기 전에 다음

scanf(" %c",&secondchar); 

공간을 사용하여 개행 문자를 플러시 문자를

scanf("%c", &firstchar); 

를 스캔 할 필요가있다. 당신은 당신이 첫 번째 문자를 입력 한 후 newline을 소비해야한다 문자

2

)에 대한 형식 지정자 %c와 입력을 받아야합니다

+0

Ahhh 내가 지금 잡았다 – NeuromancerNoob

+0

@NoobNeuromancer 문제가 해결 되었습니까? 'putchar (ASCIvariable)'또는'printf ("% c \ n", ASCIvariable);' – Gopi

+0

예 스페이스가 입력을 허용했습니다. 감사합니다. – NeuromancerNoob

1

1)

3) 당신은 할당 문을 혼동하는 것

a=bb의 액수를 a에 할당하며 그 반대의 경우는 아닙니다.

printf("Please enter a character. "); 
scanf(" %c", &firstchar); 
//The space before %c will consume the newline 

printf("Please enter another character. "); 
scanf(" %c", &secondchar); 

if(firstchar < secondchar) 
{ 
    highest=secondchar ; 
    lowest=firstchar ; 
} 
else 
{ 
    highest=firstchar; 
    lowest= secondchar ; 
} 

//Changed the for loop to get characters between two inputs 
variable = lowest+1; 
for (; variable < highest; variable++) 
{ 
    ASCIvariable= variable ; 
    printf("%c ", ASCIvariable); 

} 
+0

감사합니다. – NeuromancerNoob

관련 문제