用c语言分开输出数据

时间:2016-04-13 14:04:44

标签: c

我只想问一下如何用c语言分隔输出数据,我的数据代码定义为机器代码数据,我用了4字节的WORD指令。

      typedef uint32_t REGISTER;        // registers are 32 bits
      typedef uint32_t WORD;            // words are 32 bits
      typedef uint8_t BYTE;             // bytes are 8 bits

我的出局是:

      E3A00001     MOV r0,#1
      E3A01002     MOV r1,#2
      E0802001     ADD r2,r0,r1
      E2822005     ADD r2,r2,#5

我想将它们分开:

       E3 A0 00 01       MOV r0,#1
       E3 A0 10 02       MOV r1,#2
       E0 80 20 01       ADD r2,r0,r1
       E2 82 20 05       ADD r2,r2,#5

2 个答案:

答案 0 :(得分:1)

您可以将读取行传递给sprintf以获取转换后的字符串:

 sprintf (converted, "%c%c %c%c %c%c %c%c%s",line [0],line [1],line [2],line [3],line [4],line [5],line [6],line [7], &line [8]);

答案 1 :(得分:0)

这段代码看起来很难看,但确实有效。无论如何,每行8个字符并不是一个很好的数字,所以我认为“手动”完成这项工作是有意义的。

#include <stdio.h> 

int main(void)
{
    FILE *fin, *fout;
    fin = fopen("in.asm", "r");
    fout = fopen("out.asm", "w");
    char word[8];
    char str[80];
    while(fscanf(fin, " %c%c%c%c%c%c%c%c%[^\n]", &word[0], &word[1], &word[2], &word[3], &word[4], &word[5], &word[6], &word[7], str) == 9)
    {
        fprintf(fout, "%c%c %c%c %c%c %c%c\t%s\n", word[0], word[1], word[2], word[3], word[4], word[5], word[6], word[7], str);
    }
    fclose(fin);
    fclose(fout);
}