分类: C/C++
2009-04-01 09:08:40
题目:将16进制的数值转换成字符存放在缓冲区内 要求1:查找缓冲区内是否有能存放已经转换的字符的空间。 要求2:能使MessageBoxAPI函数显示此缓冲区内的字符,要求结果正确。 要求3:不允许使用连接字符串函数。 在网上做别人的出题,写下了程序:
|
/*****************************************
本程序的思路是不断输入整数,转换成十六进制字符放入
缓冲区中,直到用户输入结束字符或缓冲区空间不够
退出循环,输出缓冲区中的十六进制,不知道和LZ的的原题想法是不是一样
DEVC++测试通过 乱乱
********************************************************************/
#include
#include
#define BufferLenth 512 /*缓冲区大小*/
char * pHex;
int i;
void itoHex(unsigned int num) /*无符号整形转16进制字符*/
{ i=0;
if (num==0) pHex[i++]='0'; /*输入是0的情况*/
for (;num>0;num/=16,i++)
if (num%16<10) pHex[i]=num%16+'0'; /*进制转换,把十六进制倒序放入pHex数组*/
else pHex[i]=num%16+55;
}
int main()
{unsigned int num;
int j=0;
char *buffer;
pHex= (char *)calloc(2*sizeof(int),sizeof(char)); /*申明 存放16进制字符的指针*/
buffer =(char *)calloc(BufferLenth,1); /*申请 一个BufferLenth大的缓存区*/
while(printf("Input a number (q to quit):")&& scanf("%u",&num)==1)
{
itoHex(num);
if (j+i-1
for (i--;i>=0;i--) buffer[j++]=pHex[i]; /*十六进制放入buffer中*/
if(j
}
else {printf("The buffer have not enough space!\n");break;} /*缓冲区空间不够退出*/
}
printf("\nAll chars in the buffer is: \n ");
j=0;
while(buffer[j]!='\0'&& j
free(pHex);
getch();
return 0;
}