字符串转二进制和十六进制字符串

问题描述:

输入任意长的可见字符,将该字符串的数据转为字符型的二进制01和十六进制0-f的字符串在终端显示。
示例:
输入:abcdef
在屏幕输出二进制:01100001 01100010 01100011 01100100 01100101 01100110
十六进制:616263646566

代码如下:

#include <stdio.h>
//转2进制字符串
void fun(char ch,char buf[])
{
    int i,t,n=7;
    for(i=0;i<8;i++)
        buf[i] = '0';
    t = ch;
    while(t)
    {
        buf[n] = '0'+t%2;
        t/=2;
        n--;
    }
    buf[8] = 0;
}

int main()
{
    int i = 0;
    char buf[1000]={0};
    char tmp[10]={0};
    gets(buf);
    while(buf[i])
    {
        fun(buf[i],tmp);
        if(i==0)
            printf("%s",tmp);
        else
            printf(" %s",tmp);
        i++;
    }
    printf("\n");
    i=0;
    while(buf[i])
    {
        printf("%0x",buf[i]);
        i++;
    }
    return 0;
}

输入结束标志是什么?换行?