Print to file in C

How to print to an empty .txt file that I have already created?

I am already printing the results on the console, and now I want to print a file called "Output.txt" . I tried a couple of things that didn't work, but I think it was easier to duplicate printDictionary() specifically for printing to a file called printDictionaryToFile() . I lost a little how to do it. Can someone fix me where I was wrong? I already added an additional FILE type called *out for my output to the file.

 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> #include <stddef.h> #define PUNC " \t\n\r,;.:!()[]{}?'\"" typedef struct node node; typedef struct node { char *word; int count; node *left; node *right; } node; void insert(node ** dictionary, char * word) { int result; node * entry; if (word == NULL || dictionary == NULL) return; if (*dictionary == NULL) { entry= (node *) malloc(sizeof(node)); strcpy( entry->word= (char *) malloc(strlen(word) + 1), word); entry->left= entry->right= NULL; entry->count= 1; *dictionary= entry; return; } result = strcmp(word, (*dictionary)->word); if ( result < 0 ) insert(&(*dictionary)->left, word); else if (result > 0) insert(&(*dictionary)->right, word); else ++(*dictionary)->count; return; } void printDictionary(node * dictionary) { if (dictionary == NULL) return; printDictionary(dictionary->left); printf( "%s = %d\n", dictionary->word, dictionary->count); printDictionary(dictionary->right); return; } void printDictionaryToFile( node * dictionary ) { if (dictionary == NULL) return; printDictionaryToFile(dictionary->left); fprintf(out, "%s = %d\n", dictionary->word, dictionary->count); printDictionaryToFile(dictionary->right); return; } void freeDictionary( node ** dictionary ) { if (dictionary == NULL || *dictionary == NULL) return; freeDictionary(&(*dictionary)->left); freeDictionary(&(*dictionary)->right); free((*dictionary)->word); free(*dictionary); *dictionary= NULL; return; } int main( int argc, char *argv[] ) { FILE *fp, *out; out = fopen("Output.txt", "w"); char b[1000], *s; node *dictionary= NULL; int i; for (i= 1; i < argc; ++i) { if ((fp = fopen(argv[i], "r")) == NULL) { fprintf(stderr, "File %s can not be opened.\n", argv[i]); continue; } for (s = fgets(b, sizeof(b), fp); s != NULL; s = fgets(b, sizeof(b), fp)) { char *word; for (word= strtok(b, PUNC); word != NULL; word = strtok(NULL, PUNC)) insert(&dictionary, strlwr(word)); } fclose(fp); } printDictionaryToFile(dictionary); printDictionary(dictionary); freeDictionary(&dictionary); return 0; } 
+7
c output text-files binary-search-tree
source share
1 answer

You can use the fprintf() function, which is very similar to printf() in the way it works.

Here is an example:

 FILE *fp; int myInt = 5; fp = fopen("Output.txt", "w");// "w" means that we are going to write on this file fprintf(fp, "This is being written in the file. This is an int variable: %d", myInt); 

The result in your file will be as follows:

This is written to the file. This is an int variable: 5

It is worth mentioning that opening a file with w as a parameter will destroy the contents of the file each time it is opened.

+6
source share

All Articles