2015-01-17 2 views
-3

사용자 입력을 선택한 입력 및 출력으로 변환하는 프로그램을 작성하고 있습니다. 예를 들어, 사용자는 16 진 값 입력을 입력하고 2 진 출력을 수신하도록 선택할 수 있습니다. 내 공격 계획은 사용자 입력을 문자열로 받아서 십진수로 변환 한 다음 거기에서 그 십진수 값을 선택한 출력으로 변환하는 것이 었습니다.배열없이 문자열을 십진수로 변환

입력이 "Hello world!"이면 10 진수 값은 "72 101 108 108 111 32 119 111 114 108 100 33"이됩니다. 그러나 프로그램을 실행하면 72의 값만 수신됩니다. 지금 당장은 콘솔에 출력하여 작동 여부를 테스트합니다. 변수로 저장하고 원하는 함수로 변환하여 변환 할 계획입니다.

선생님은 배열 없이도 할 수 있다고했지만 선생님은 어떻게해야하는지 잘 모르겠습니다.

int main (void) { 
    char inputToConvert[] = "Hello world!"; 
    int output = (int)*inputToConvert; 
    printf("%d", output); 
} 
+5

프로그램은 사용자가 요청한대로 문자 배열의 첫 번째 항목을 나타내는 하나의 숫자를 인쇄합니다. 더 많이 인쇄하려면 루프를 고려해야합니다. –

+0

오른쪽. 내가 겪고있는 내 문제는 다른 변수에 전달할 수 있도록 이러한 변수를 모두 int 변수에 저장하려고한다는 것입니다. 나는 그것이 작동하고 있는지 여부를 테스트하기 위해 그것을 인쇄했다. 미안 해요, 내가 더 명확하게해야합니다. – stumpedForLife

+2

귀하의 질문은 매우 불분명합니다. 만약 당신이 당신의 시스템에 엄청나게 큰 int를 가지고 있지 않다면, 12 개의 7 비트 값을 하나의 int로 채울 수 없을 것입니다. 배열을 사용하는 것을 피하는 명백한 방법은'getchar()'과 같이 한 번에 한 문자 씩 처리하는 것입니다. –

답변

0
#include <stdio.h> 

int main(){ 
    //input : hex character(0-9a-fA-F)'s string 
    //output : display as bin(0,1)'s string 
    char *data ="deadbeef";//input string 
    while(*data){ 
     switch(*data++){ 
     case '0': fputs("0000",stdout);break; 
     case '1': fputs("0001",stdout);break; 
     case '2': fputs("0010",stdout);break; 
     case '3': fputs("0011",stdout);break; 
     case '4': fputs("0100",stdout);break; 
     case '5': fputs("0101",stdout);break; 
     case '6': fputs("0110",stdout);break; 
     case '7': fputs("0111",stdout);break; 
     case '8': fputs("1000",stdout);break; 
     case '9': fputs("1001",stdout);break; 
     case 'a': 
     case 'A': fputs("1010",stdout);break; 
     case 'b': 
     case 'B': fputs("1011",stdout);break; 
     case 'c': 
     case 'C': fputs("1100",stdout);break; 
     case 'd': 
     case 'D': fputs("1101",stdout);break; 
     case 'e': 
     case 'E': fputs("1110",stdout);break; 
     case 'f': 
     case 'F': fputs("1111",stdout);break; 
     default: 
      fputs("invalid input!\n", stderr); 
     } 
    } 
    puts(""); 
    return 0; 
} 
0

음, 코드에 나는 배열에 관한 솔루션을 게시 할 수 위.

#include <stdio.h> 

#define STRINGLENGTH 13 

int main(void) 
{ 
    char string[ STRINGLENGTH ] = "Hello, world"; 
    int valueOfString = 0; 
    // STRINGLENGTH -1 won't show the '/0'' terminating string 
    for(int i = 0; i < STRINGLENGTH - 1; i++) 
    { 
     printf("%c = %d\r\n", string[ i ], string[ i ]); 
     valueOfString += string[ i ]; 
    } 
    printf("Sum of chars: %d\r\n", valueOfString); 
    return(0); 
} 

물론 배열 없이도 사용할 수 있지만 결국에는 동일한 결과가 발생할 때 그 노력이 가치가 없다고 생각합니다.

관련 문제