我正在编写一个程序,将用户输入转换为任何选定的输入和输出。例如,用户可以选择他们想要输入十六进制值输入并接收二进制输出。我的攻击计划是将用户输入作为字符串,然后将其转换为小数,然后从那里将该十进制值转换为选择的任何输出。
因此,如果输入为“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);
}
答案 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 );
}
当然,如果你得到相同的结果,我认为这种努力是不值得的。