【问题标题】:hexadecimal to decimal conversion十六进制转十进制
【发布时间】:2014-04-20 06:46:50
【问题描述】:

第一段代码在输出时将b.txt中的每一行打印在一个新行中,第二段代码是十六进制到十进制的转换。我不擅长编写大程序,因此我将任务拆分并编写较小的程序。我在结合这两个程序时遇到了麻烦。谁能帮忙?

#include <stdio.h>
int main ( int argc, char **argv ) 
{
    FILE *fp = fopen ( "b", "r");
    char line[1024];
    int ch = getc ( fp );
    int index = 0;
    while ( ch != EOF ) {
        if ( ch != '\n'){
            line[index++] = ch;
        }else {
            line[index] = '\0';
            index = 0;
            printf ( "%d\n", line );
        }
        ch = getc ( fp );
    }
    fclose ( fp );
    return 0;
}

这是第二个节目

  #include <stdio.h>
  #include <stdlib.h>

  int main()
  {
      unsigned int d;
      FILE *fp;
      FILE *ptr_file;
      fp = fopen("normal_data","r"); // read mode
      ptr_file =fopen("normal_decimal", "w");
      while(fscanf(fp,"%x", &d) == 1)
      {
          fprintf(ptr_file, "%d /n", d);
      }
      while( ( d = fgetc(fp) ) != EOF )
          fclose(fp);
      return 0;
  }

【问题讨论】:

  • printf ( "%d\n", line ); 显示相同的值。什么意思?

标签: c hex type-conversion decimal


【解决方案1】:

将程序拆分成相关的小片段是一种很好的编程习惯。

但不要在任何地方都使用 main 函数,而是尝试制作完成某些任务的函数并将它们添加到头文件中。

这将使编写、调试和重用代码变得更加容易。

在上述情况下,将十六进制转换为十进制显然是可以反复使用的。

所以,只需创建一个函数int hex_to_dec(char* input);,它接受一个输入字符串,例如“3b8c”并将其转换为十进制并返回转换后的值。

您可能还想创建函数void printFile(FILE* fp);,它获取指向文件的指针并将其数据打印到标准输出。

您可以将这些和您创建的其他函数添加到像 myFunctions.h 这样的头文件中,然后将该文件包含到您需要在其中使用函数的任何程序中。

【讨论】:

    猜你喜欢
    • 2018-07-26
    • 2015-04-21
    • 1970-01-01
    • 2014-10-30
    • 2021-03-22
    • 1970-01-01
    • 2014-01-07
    相关资源
    最近更新 更多