将字符串转换为十进制而不使用数组

时间:2015-01-17 04:45:41

标签: c

我正在编写一个程序,将用户输入转换为任何选定的输入和输出。例如,用户可以选择他们想要输入十六进制值输入并接收二进制输出。我的攻击计划是将用户输入作为字符串,然后将其转换为小数,然后从那里将该十进制值转换为选择的任何输出。

因此,如果输入为“Hello world!”,则我的小数值为“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);
}

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分: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 );
}

当然,如果你得到相同的结果,我认为这种努力是不值得的。