将I16流数据转换为字符串

时间:2014-06-05 12:00:36

标签: c

我有一个包含I16复数的二进制数据的数据流。

我想转换为ANSI C中的字符串表示。

我已经尝试了下面的代码,但它给了我相同的二进制输出。

怎么做呢?

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

int main(int argc, char* argv[]){
  FILE *fp, *out;
  char *buffer = NULL; /* use a pointer for dynamic memory allocation */
  size_t i = 0, charCount = 0;
  fp = fopen("c:/input.txt", "r"); /*read as ascii - not binary */
  if(fp != NULL){ /*use 'fp' here 'out' is not initalized */
    fseek(fp, 0, SEEK_END); /* go to end of the file */
    charCount = ftell(fp) - 1;  /* get position */
    fseek(fp, 0, SEEK_SET); /* return to the beginning of the file */
    buffer = (char*)malloc(sizeof(char)*charCount); /* allocate memory */
    fread(buffer, sizeof(char) * charCount, 1, fp); /* reads all characters from the file */
  }
  out = fopen("c:/out.txt", "w");
  if(out != NULL){
    for(i = 0; i < charCount; i += 1){ /* loop from 0 to count of characters */
      const unsigned char var = buffer[i];
      fprintf(out, "%c", var);
    }
    fclose(out);
  }
  fclose(fp);
  if(buffer != NULL){
    free(buffer); /* deallocate memory */
  }
  return 0;
}

0 个答案:

没有答案