Link to home
Start Free TrialLog in
Avatar of mojeaux
mojeauxFlag for United States of America

asked on

Writing to a text file in C

Hi -
I have one more question regarding the writing to a text file.   I posted earlier yesterday and resolved the permission issues.   The program is working technically... but not as expected.  I'm not sure what I've done wrong here...   Please view code below and attached files which shows the difference between what the user sees on the display (printf) and what the user sees in the text file (fprintf).   I would appreciate a point in the right direction.   Thanks!

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


int main (void)
{
      /*LOCAL DEFINITIONS*/

      FILE* fpNumbs;
      void pyramid(FILE *fpNumbs);
      
      /*STATEMENTS*/
      
      
      fpNumbs=fopen("C:\\MyOutput.txt", "w");

      if (fpNumbs == NULL)
      {
            printf("Error opening text file!!\n");
            system("pause");
      }
      else
            pyramid(fpNumbs);
            system("pause");

      return 0;
}



/*~~~~~~~~~~~~~~~~~  pyramid Function ~~~~~~~~~~~~~~~
Run through 9 rows and 9 columns, each time de-incrementing
the column by one.   Display number pattern to user.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/

void pyramid(FILE *fpNumbs)
{
/* LOCAL DEFINITIONS */      
int row;
int col;
int counter;

/* STATEMENTS */

row=0;
col=0;
counter=9;

for(row=1;row<=9;row++)
{
for(col=1;col<=counter;col++)
      printf("%d ", col);
                  fprintf(fpNumbs, "%d  ", col);
      fprintf(fpNumbs, "\n");
      printf("\n");
      {
counter=counter-1;
}
}

}/* counter loop*/
output-different.bmp
Avatar of Zoppo
Zoppo
Flag of Germany image

Hi mojeaux,

you missed to put a {...} around parts of the code:
for(col=1;col<=counter;col++)
      printf("%d ", col);
                  fprintf(fpNumbs, "%d  ", col);
    ...

Open in new window

is interpreted by the compiler as
for(col=1;col<=counter;col++)
{
      printf("%d ", col);
}
                  fprintf(fpNumbs, "%d  ", col);
...

Open in new window


Change the loop to look like this:
for(row=1;row<=9;row++)
{
      for(col=1;col<=counter;col++)
      {
            printf("%d ", col);
            fprintf(fpNumbs, "%d  ", col);
            fprintf(fpNumbs, "\n");
            printf("\n");
      }
      counter=counter-1;
}

Open in new window

Hope that helps,

ZOPPO
ASKER CERTIFIED SOLUTION
Avatar of Zoppo
Zoppo
Flag of Germany image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of mojeaux

ASKER

Perfect... I now see my mistake... keeping the new line in the column loop in stead of the row loop.   Thanks so much.