代码之家  ›  专栏  ›  技术社区  ›  user9065020

文本到十进制C

  •  1
  • user9065020  · 技术社区  · 6 年前

    手动转换。

    例如,输入=axe,为什么“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("-");
          }
        }
    }
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   John Bode    6 年前

    您已声明 data as类型 char ,意味着它只能容纳 仅有一个的 字符值( 'A' ', '1' , '0' , '\n' 等)。

    如果您希望能够存储 一串 数据 (例如 "axe" "foo" "Supercalifragilisticexpialidocious" ),那么您需要申报 数据 作为一个 大堆 属于 烧焦 ,并且数组大小必须至少比要存储的最长字符串的长度长一倍:

    #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 (0),并且从不更新循环中任一实体的值。每次通过循环都必须更新其中一个。这是我想要的 认为 你要做的是:

    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等)的编码值打印为整数。