How can I write binary to a file?
I am 71 years old and haven’t programmed in C for many years. So, this is going slow.
I am using Borland C++ IDE to write 16 bit code for a picoFlash single board computer with a 186 compatible processor and 512K of Ram. I am adding code to an existing program that takes 183 pages to print. Right now I am trying to write the contents of a string to a file opened using “wb”.
The compiler and linker don’t give any error messages.
The I have extracted the relevant code as shown below.
Code:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <setjmp.h>
#include <dos.h>
#include <alloc.h>
#include <mem.h>
#include <time.h>
#include <tcp.h>
#include <conio.h>
#include "g5lib.h"
#include "cdacs.h"
#include "comms.h"
#include "comms2.h"
#include "procio.h"
extern char far rbuffer[4096];
// extern because it is created by another module
//far because I ran short of memory space
void UploadAFile(char *strDirectory,char *strFileName, int intOffset)
{
char far *farCharPtr;
int intNrCharsInLine;
char strFullFileName[121];
static FILE *TxtULFilePtr;
int intCnt;
Some code
//Open file for "wb"
TxtULFilePtr = fopen(strFullFileName, "wb");
Some code to calculate farCharPtr
Some code to calculate intNrCharsInLine
//At this point rbuffer containes a string
with imbedded carriage returns and line feeds
//null terminate rbuffer to avoid the need
to create a second large array
rbuffer[intOffset] = '\0';
//Note: If I comment out this line
it doesn’t change the output.
//The following six lines were added
to verify the contents of rbuffer during test
for(intCnt=0;intCnt<intNrCharsInLine;intCnt++)
{
farCharPtr = farLinePtr + intCnt;
strncpy(strChar,farLinePtr + intCnt,1);
printf("#204D==============%s==
=========\n",strChar);
}
//Write from rbuffer to file
fprintf(TxtULFilePtr,"%s",farLinePtr);
fclose(TxtULFilePtr);
}
In a simple test case, I have a string of characters that were read from a text file. I want to write them into a new file (strFullFileName). The original file contains:
This is test line 1
This is test line 2
This is test line 3
This is test line 4
Right now the first two lines are put in a string and passed to this module in “rbuffer”.
When I run the program, the for loop gives me:
#204D==============T===========
#204D==============h===========
#204D==============i===========
#204D==============s===========
#204D============== ===========
#204D==============i===========
#204D==============s===========
#204D============== ===========
#204D==============t===========
#204D==============e===========
#204D==============s===========
#204D==============t===========
#204D============== ===========
#204D==============L===========
#204D==============i===========
#204D==============n===========
#204D==============e===========
#204D============== ===========
#204D==============1===========
#204D=========================
#204D=========================
#204D==============T===========
#204D==============h===========
#204D==============i===========
#204D==============s===========
#204D============== ===========
#204D==============i===========
#204D==============s===========
#204D============== ===========
#204D==============t===========
#204D==============e===========
#204D==============s===========
#204D==============t===========
#204D============== ===========
#204D==============L===========
#204D==============i===========
#204D==============n===========
#204D==============e===========
#204D============== ===========
#204D==============2===========
===================
When I check the new file contents, only the first line appears.
C:\>type test.txt
This is test Line 1
Question #1: How can I print the ASCII values next to the letters so I can verify that the nonprinting characters are carriage return and line feed and are not null characters?
Question #2: Is fprintf(TxtULFilePtr,"%s",farLinePtr); the correct command to put the string in the file?