根据6楼的提示
修改了下
貌似大大简化了~
/*输入偶数个16进制的数 以每两位为一个单位 输出对应的ascii码*/
#define SIZE 300 //可修改输入字符长度
#include<stdio.h>
#include<string.h>
#include<process.h>
int main()
{
char a[SIZE];
int b[SIZE],c[SIZE/2],i,j,m,flag;
printf("please input the hex:\n");
gets(a);
m=strlen(a);
if (m%2!=0) //必须输入偶数位!
{printf("please enter double number of hex!\n");exit(0);}
for(i=0;a[i]!='\0';i++)
{
if(a[i]>='a'&&a[i]<='f')
b[i]=a[i]-'a';
else if(a[i]>='A'&&a[i]<='F')
b[i]=a[i]-'A';
else if(a[i]>='0'&&a[i]<='9')
b[i]=a[i]-'0';
else flag=1;
}
for(i=0,j=0;i<m/2;i++)
{
c[i]=b[j]*16+b[j+1];
j=j+2;
}
for(i=0;i<m/2;i++)
c[i]=char(c[i]);
c[i+1]='\0';
//if(flag) printf("You input hex number is wrong!\n");
//else
//{
printf("out of string :\n");
for(j=0;j<m/2;j++)
printf("%c",c[j]);
//这里输出结果的时候
// 若改成printf("out of string: \n%s",c);
//就只能输出第一个字符!!
这个上面还未找到原因!!!!
printf("\n");
//}
return(0);
}