Thanks for your replies everyone, I took on the advice of @Andreas Wenzel and re-read hint in the question. Implimented by making a nested loop just for the copy array and moved all the other code to another nested for loop. I also applied the cast to float and round functions within the loop and removed the section at the bottom of the loop where I reassign the values from "copy" to "image".
code now passes all the checks.
void blur(int height, int width, RGBTRIPLE image[height][width])
{
RGBTRIPLE copy[height][width];
int count = 0;
for (int i = 0; i < height; i++)
{
for (int j = 0; j < width; j++)
{
copy[i][j] = image[i][j];
}
}
for (int i = 0; i < height; i++)
{
for (int j = 0; j < width; j++)
{
// check that the + 1's and - 1's won't take loop out of bounds
// left bottom corner (/4)
if (i + 1 == height && j - 1 < 0)
{
count = 4.0;
// red
image[i][j].rgbtRed =
round((float) (copy[i][j].rgbtRed + copy[i - 1][j].rgbtRed +
copy[i][j + 1].rgbtRed + copy[i - 1][j + 1].rgbtRed) /
count);
// green
image[i][j].rgbtGreen =
round((float) (copy[i][j].rgbtGreen + copy[i - 1][j].rgbtGreen +
copy[i][j + 1].rgbtGreen + copy[i - 1][j + 1].rgbtGreen) /
count);
// blue
image[i][j].rgbtBlue =
round((float) (copy[i][j].rgbtBlue + copy[i - 1][j].rgbtBlue +
copy[i][j + 1].rgbtBlue + copy[i - 1][j + 1].rgbtBlue) /
count);
}
// right top corner
else if (i - 1 < 0 && j + 1 == width)
{
count = 4.0;
// red
image[i][j].rgbtRed =
round((float) (copy[i][j].rgbtRed + copy[i + 1][j].rgbtRed +
copy[i][j - 1].rgbtRed + copy[i + 1][j - 1].rgbtRed) /
count);
// green
image[i][j].rgbtGreen =
round((float) (copy[i][j].rgbtGreen + copy[i + 1][j].rgbtGreen +
copy[i][j - 1].rgbtGreen + copy[i + 1][j - 1].rgbtGreen) /
count);
// blue
image[i][j].rgbtBlue =
round((float) (copy[i][j].rgbtBlue + copy[i + 1][j].rgbtBlue +
copy[i][j - 1].rgbtBlue + copy[i + 1][j - 1].rgbtBlue) /
count);
}
// right bottom corner
else if (i + 1 == height && j + 1 == width)
{
count = 4.0;
// red
image[i][j].rgbtRed =
round((float) (copy[i][j].rgbtRed + copy[i - 1][j].rgbtRed +
copy[i][j - 1].rgbtRed + copy[i - 1][j - 1].rgbtRed) /
count);
// green
image[i][j].rgbtGreen =
round((float) (copy[i][j].rgbtGreen + copy[i - 1][j].rgbtGreen +
copy[i][j - 1].rgbtGreen + copy[i - 1][j - 1].rgbtGreen) /
count);
// blue
image[i][j].rgbtBlue =
round((float) (copy[i][j].rgbtBlue + copy[i - 1][j].rgbtBlue +
copy[i][j - 1].rgbtBlue + copy[i - 1][j - 1].rgbtBlue) /
count);
}
// left top corner
else if (i - 1 < 0 && j - 1 < 0)
{
count = 4.0;
// red
image[i][j].rgbtRed =
round((float) (copy[i][j].rgbtRed + copy[i + 1][j].rgbtRed +
copy[i][j + 1].rgbtRed + copy[i + 1][j + 1].rgbtRed) /
count);
// green
image[i][j].rgbtGreen =
round((float) (copy[i][j].rgbtGreen + copy[i + 1][j].rgbtGreen +
copy[i][j + 1].rgbtGreen + copy[i + 1][j + 1].rgbtGreen) /
count);
// blue
image[i][j].rgbtBlue =
round((float) (copy[i][j].rgbtBlue + copy[i + 1][j].rgbtBlue +
copy[i][j + 1].rgbtBlue + copy[i + 1][j + 1].rgbtBlue) /
count);
}
// left edge (/6)
else if (j - 1 < 0)
{
count = 6.0;
// red
image[i][j].rgbtRed =
round((float) (copy[i][j].rgbtRed + copy[i + 1][j].rgbtRed +
copy[i - 1][j].rgbtRed + copy[i][j + 1].rgbtRed +
copy[i + 1][j + 1].rgbtRed + copy[i - 1][j + 1].rgbtRed) /
count);
// green
image[i][j].rgbtGreen =
round((float) (copy[i][j].rgbtGreen + copy[i + 1][j].rgbtGreen +
copy[i - 1][j].rgbtGreen + copy[i][j + 1].rgbtGreen +
copy[i + 1][j + 1].rgbtGreen + copy[i - 1][j + 1].rgbtGreen) /
count);
// blue
image[i][j].rgbtBlue =
round((float) (copy[i][j].rgbtBlue + copy[i + 1][j].rgbtBlue +
copy[i - 1][j].rgbtBlue + copy[i][j + 1].rgbtBlue +
copy[i + 1][j + 1].rgbtBlue + copy[i - 1][j + 1].rgbtBlue) /
count);
}
// right edge
else if (j + 1 == width)
{
count = 6.0;
// red
image[i][j].rgbtRed =
round((float) (copy[i][j].rgbtRed + copy[i + 1][j].rgbtRed +
copy[i - 1][j].rgbtRed + copy[i][j - 1].rgbtRed +
copy[i + 1][j - 1].rgbtRed + copy[i - 1][j - 1].rgbtRed) /
count);
// green
image[i][j].rgbtGreen =
round((float) (copy[i][j].rgbtGreen + copy[i + 1][j].rgbtGreen +
copy[i - 1][j].rgbtGreen + copy[i][j - 1].rgbtGreen +
copy[i + 1][j - 1].rgbtGreen + copy[i - 1][j - 1].rgbtGreen) /
count);
// blue
image[i][j].rgbtBlue =
round((float) (copy[i][j].rgbtBlue + copy[i + 1][j].rgbtBlue +
copy[i - 1][j].rgbtBlue + copy[i][j - 1].rgbtBlue +
copy[i + 1][j - 1].rgbtBlue + copy[i - 1][j - 1].rgbtBlue) /
count);
}
// top edge
else if (i - 1 < 0)
{
count = 6.0;
// red
image[i][j].rgbtRed =
round((float) (copy[i][j].rgbtRed + copy[i + 1][j].rgbtRed +
copy[i][j + 1].rgbtRed + copy[i][j - 1].rgbtRed +
copy[i + 1][j + 1].rgbtRed + copy[i + 1][j - 1].rgbtRed) /
count);
// green
image[i][j].rgbtGreen =
round((float) (copy[i][j].rgbtGreen + copy[i + 1][j].rgbtGreen +
copy[i][j + 1].rgbtGreen + copy[i][j - 1].rgbtGreen +
copy[i + 1][j + 1].rgbtGreen + copy[i + 1][j - 1].rgbtGreen) /
count);
// blue
image[i][j].rgbtBlue =
round((float) (copy[i][j].rgbtBlue + copy[i + 1][j].rgbtBlue +
copy[i][j + 1].rgbtBlue + copy[i][j - 1].rgbtBlue +
copy[i + 1][j + 1].rgbtBlue + copy[i + 1][j - 1].rgbtBlue) /
count);
}
// bottom edge
else if (i + 1 == height)
{
count = 6.0;
// red
image[i][j].rgbtRed =
round((float) (copy[i][j].rgbtRed + copy[i - 1][j].rgbtRed +
copy[i][j + 1].rgbtRed + copy[i][j - 1].rgbtRed +
copy[i - 1][j + 1].rgbtRed + copy[i - 1][j - 1].rgbtRed) /
count);
// green
image[i][j].rgbtGreen =
round((float) (copy[i][j].rgbtGreen + copy[i - 1][j].rgbtGreen +
copy[i][j + 1].rgbtGreen + copy[i][j - 1].rgbtGreen +
copy[i - 1][j + 1].rgbtGreen + copy[i - 1][j - 1].rgbtGreen) /
count);
// blue
image[i][j].rgbtBlue =
round((float) (copy[i][j].rgbtBlue + copy[i - 1][j].rgbtBlue +
copy[i][j + 1].rgbtBlue + copy[i][j - 1].rgbtBlue +
copy[i - 1][j + 1].rgbtBlue + copy[i - 1][j - 1].rgbtBlue) /
count);
}
else
{
count = 9.0;
// red
image[i][j].rgbtRed = round(
(float) (copy[i][j].rgbtRed + copy[i + 1][j].rgbtRed + copy[i - 1][j].rgbtRed +
copy[i][j + 1].rgbtRed + copy[i][j - 1].rgbtRed +
copy[i + 1][j + 1].rgbtRed + copy[i + 1][j - 1].rgbtRed +
copy[i - 1][j + 1].rgbtRed + copy[i - 1][j - 1].rgbtRed) /
count);
// green
image[i][j].rgbtGreen =
round((float) (copy[i][j].rgbtGreen + copy[i + 1][j].rgbtGreen +
copy[i - 1][j].rgbtGreen + copy[i][j + 1].rgbtGreen +
copy[i][j - 1].rgbtGreen + copy[i + 1][j + 1].rgbtGreen +
copy[i + 1][j - 1].rgbtGreen + copy[i - 1][j + 1].rgbtGreen +
copy[i - 1][j - 1].rgbtGreen) /
count);
// blue
image[i][j].rgbtBlue =
round((float) (copy[i][j].rgbtBlue + copy[i + 1][j].rgbtBlue +
copy[i - 1][j].rgbtBlue + copy[i][j + 1].rgbtBlue +
copy[i][j - 1].rgbtBlue + copy[i + 1][j + 1].rgbtBlue +
copy[i + 1][j - 1].rgbtBlue + copy[i - 1][j + 1].rgbtBlue +
copy[i - 1][j - 1].rgbtBlue) /
count);
}
}
}
}