C - bubble从十进制到十六进制的转换排序

时间:2014-10-21 18:43:09

标签: c

我在这段代码中遇到了障碍,而且我会提前说这是一个家庭作业,但我已经完成了大部分工作,所以我觉得可以提出一些指示这最后一件给我带来麻烦的作品。

我必须编写一个程序来读取数字列表,将其打印到stdout,使用冒泡排序对其进行排序,再次打印,然后将其写入指定的输出文件。排序功能正常工作,我已经设置为从命令行读取开关(-i或--i​​nput,发信号输入文件; -o或--output,发信号输出文件),这也是好像在起作用。这一切都很好!

我们应该设置它以便它也可以读取:

  1. -x或--hexin从输入文件接受十六进制格式的输入数据。然后假设输入中的数据是十六进制格式(没有0x)这是一个可选参数。丢失时,数据以小数表示。
  2. -y或--hexout以十六进制格式(不带0x)将结果输出到输出文件。这是一个可选参数。丢失时,数据必须为小数。
  3. 我对如何处理这两个最后要求感到困惑。我希望我可以说我接近一个解决方案,但我完全消隐,并且非常感谢我能得到的任何帮助。我应该创建一个新函数,它接受一个整数数组的指针,并通过一些转换过程使每个元素成为十六进制?是否有一些更快的方法可以做到这一点,我已经完全错过了内置于C,或者我是否需要对余数和切换案例进行一些工作?

    我的bubbleSort函数是否需要调整以适应十六进制输入?我认为它适用于十进制和十六进制输入,但我不完全确定......

2 个答案:

答案 0 :(得分:1)

您可以使用%x格式说明符将整数值转换为十六进制值。

例如:

int data=30;
printf("%x\n", data);

这将输出:1e

答案 1 :(得分:0)

查看fprintf和fscanf的文档,可以将%X放入格式字符串中以读取和写入十六进制表示法。