Q:

C for loop to iterate array different from putc

I'm trying to read from a text file and for non printing ascii characters I would like to print out "^" + "G" as an example of the BELL character.  Much like the cat -v command of unix.  The problem happens in the for loop where I am supposed to store chars until I hit a newline and then print them out.  The for loop is printing "G    " for ctrl+G and "t     " "e     " "s     " "t     " for test.   
int readFile(FILE* inputFile) {

char input[5];
char *arrayEnd = &input[5]+1;

int anyChanges = 1;
int iochar = 0;
int i = 0;
//get index of new line
//substring of position until new line
//print substring position to end.
int printedColumns = 0;
//credit Foster Chapter 2
while (( iochar = getc(inputFile) ) != EOF )
{   //Returns 1 if no changes made, return 0 if any changes have been made.
    //printf("character --> %c\n",iochar);
    if(iochar != '\n') {
        //This if statement checks for normal ascii characters.
        //If the output is less than 72 it prints it and increments printedColumns.
        if (( ' ' <= iochar ) && ( iochar <= 126 ) ) {
            if(*(input + i) == *arrayEnd)
            {
                i = 0;
            }
            *(input +i) = iochar;
            //printf("input array ---> %c\n",input[i]);
            //printf("i:%d\n",i);
            //printf("iochar:%d\n",iochar);
            //putc(*(input+i), stdout);
            i++;
            }
        //This if statement checks for the non-printing characters.
        //New line is not included because it is a special case that is accounted for below
        if (iochar <= 31)  {

            if (*(input + i) == *arrayEnd)
            {
                i = 0;
            }
                *(input + i) =94;
                  putc(*(input+i), stdout);
                i++;

            if(*(input+i)== *arrayEnd)
            {
               i = 0;
            }
                *(input + i) = iochar + 64;
                putc(*(input+i), stdout);
                printf("\n");
                i++;

        }
        int b = 0;
        for (b = 0;b<6;b++){
            putc(*(input+b),stdout);
        }
}//end if != '\n'
}//end while
return anyChanges;
}//end function

A:

This seems to do a lot of what you're looking for:
#include <stdio.h>

static
int readFile(FILE *inputFile)
{
    int numChanged = 0;
    int iochar = 0;

    while ((iochar = getc(inputFile) ) != EOF)
    {
        if ((' ' <= iochar && iochar <= 126) || iochar == '\n')
            putc(iochar, stdout);
        else if (iochar < ' ')
        {
            putc('^', stdout);
            putc(iochar + 'A' - 1, stdout);
            numChanged++;
        }
        else
            numChanged++;
    }
    return numChanged;
}

int main(void)
{
    printf("Number of changed characters: %d\n", readFile(stdin));
    return 0;
}

It worked correctly on its own source code (no characters to change — no tabs in the source), and it seemed to work correctly on its own binary too.  Neither output is exciting enough to quote here. Note that it deletes characters from code 0x7F through 0xFF. You can amend that by adjusting the else clause appropriately for whatever rules you choose to specify. The question was silent on the treatment of such characters.
If you need the last 72 characters of a line, then you need to read whole lines; roll in fgets():
#include <stdio.h>
#include <string.h>

static
int readFile(FILE *fp)
{
    int numChanged = 0;
    char line[4096];

    while (fgets(line, sizeof(line), fp) != 0)
    {
        size_t len = strlen(line);
        if (line[len-1] != '\n')
            break;  // Damn! Line to long
        size_t start = 0;
        if (len > 72)
            start = len - 72;
        for (size_t i = start; i < len; i++)
        {
            /* The next line is only 70 characters long, but this comment should be truncated */
            if ((' ' <= line[i] && line[i] <= 126) || line[i] == '\n')
                putc(line[i], stdout);
            else if (line[i] < ' ')
            {
                putc('^', stdout);
                putc(line[i] + 'A' - 1, stdout);
                numChanged++;
            }
            else
                numChanged++;
        }
    }
    return numChanged;
}

int main(void)
{
    printf("Number of changed characters: %d\n", readFile(stdin));
    return 0;
}

This code, run on its own, carefully kludged source, yields the interesting part:
            start = len - 72;
        for (size_t i = start; i < len; i++)
        {
ine is only 70 characters long, but this comment should be truncated */
            if ((' ' <= line[i] && line[i] <= 126) || line[i] == '\n')
                putc(line[i], stdout);
            else if (line[i] < ' ')
            {

You can decide if I've got an off-by-one error in counting the lengths.

