2017-12-07 15 views
1

수동 변환.10 진수 텍스트 C

예를 들어, input = ax, 왜 'a'(97)의 dec가 항상 무한 루프에 있습니까?

'x'dec 및 'e'로 이동할 수 없습니까?

//project text to ASCII Dec 
#include <stdio.h> 

main(){ 
    char i=0, data, a; 

    printf("Enter data : "); 
    scanf("%s", &data); //or %c 

    while(data != i){ /* can't out from this loop I mean to the next letter of word */ 
     a = data; 
     printf("%d", data); // or printf("%d", a); 
     if(data != 0){ 
     printf("-"); 
     } 
    } 
} 
+4

입력 및 예상 출력 –

답변

2

당신은 그것을 단지 하나의 문자 값을 저장할 수있는 의미, 종류 chardata를 선언했습니다 ('A' ', '1', '0', '\n' 등). 당신이data (예 : "axe" 또는 "foo" 또는 "Supercalifragilisticexpialidocious" 같은) 문자열을 저장할 수 있도록하려면

, 당신은char배열로 data를 선언해야하며, 배열의 크기에 있어야합니다 (0), 당신은 에이의 값을 업데이트 결코 무한 루프에 관해서는

#define STRING_LENGTH 20 // store strings *up to* 20 characters long 
... 
char data[STRING_LENGTH + 1]; // +1 for the 0 terminator that marks 
           // the end of the string 

, 'a' (97) i에 결코 같다 : 가장 긴 문자열의 길이보다 적어도 하나 이상 당신은 저장하려는 루프의 ther 엔티티. 루프를 통해 매번 업데이트해야합니다. 여기에 내가 당신을 위해거야 생각 내용은 다음과 같습니다

if (fgets(data, sizeof data, stdin)) // safer than using scanf 
{ 
    for (size_t i = 0; data[i] != 0; i++) 
    { 
    printf("%d ", data[i]); // print out character encoding value 
    } 
} 

이 코드는 사용자가 문자열 입력을 받아 정수로 각 문자의 인코딩 값 (ASCII, EBCDIC, UTF-8, 무엇이든) 인쇄 .

+1

Webster 's 또는 Oxford 's에서 "Supercalifragilisticexpialidocious"를 찾을 수 없습니까? 포핀 '어쩌면? –

+0

'for'loop for error C99 무엇이든, 그 후에 'size_t'을 삭제하려고하면 작동합니다. –

+0

@TegarBangunSuganda : C99 이후 작업에 익숙합니다. C89 이전 버전에서는'i'를 루프 외부에 선언해야합니다. –