C - l'écriture de la sortie vers un fichier

EDIT: 

void print(const int *v, const int size) {
 FILE *fpIn;
 fpIn = fopen("char-array.txt", "a");
 int i;  
 if (v != 0) {
   for (i = 0; i < size; i++) {
     printf("%d", (int)v[i]);
     fprintf(fpIn, "%d\n", (int)v[i]);   
   }
   perm_count++;
   printf("\n");
 }
 fclose(fpIn);
} 

Je suppose que c'est une question relativement simple 🙂

Fondamentalement, le programme utilise un algorithme de permutation et de l'impression, la sortie standard de la console. Je veux aussi écrire le contenu d'un fichier via fprintf je suppose. Bien que je ne peux pas sembler obtenir travail. Il se contente d'afficher des caractères illisibles dans la première ligne du fichier texte et rien de plus !

Je vais coller le code ci-dessous, et l'aide est très apprécié ! L'écriture de fichier de code se trouve au sein de la fonction d'impression.

Merci,

T.

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#include <time.h>
#include <time.h>
clock_t startm, stopm;
#define START if ( (startm = clock()) == -1) {printf("Error calling clock");exit(1);}
#define STOP if ( (stopm = clock()) == -1) {printf("Error calling clock");exit(1);}
#define PRINTTIME printf("%2.3f seconds used by the processor.", ((double)stopm-          startm)/CLOCKS_PER_SEC);
int perm_count = 0; 
void print(const int *v, const int size) {
FILE *fpIn;
fpIn = fopen("char-array.txt", "wb");
int i;  
if (v != 0) {
for (i = 0; i < size; i++) {
printf("%d", (char)v[i]);
fprintf(fpIn, "%d", v[i]);  
fprintf(fpIn, "\n");  
}
perm_count++;
printf("\n");
}
} 
void permute(int *v, const int start, const int n) {  
int i;  
if (start == n-1) {
print(v, n);
}
else {
for (i = start; i < n; i++) {
int tmp = v[i];
v[i] = v[start];
v[start] = tmp;
permute(v, start+1, n);
v[start] = v[i];
v[i] = tmp;
}
}
}
int main() {
int i, x;
printf("Please enter the number of terms: ");
scanf("%d", &x);
int arr[x];   
printf("Please enter the terms: ");
for(i = 0; i < x; i++)
scanf("%d", &arr[i]);
START
permute(arr, 0, sizeof(arr)/sizeof(int));
STOP   
printf("Permutation Count: %d\n", perm_count);
PRINTTIME
return 0;
}
  • Je voudrais suggérer que la dépendance sur les macros pour les tâches qui peuvent être facilement traités par les fonctions de la place.
  • +1 @sarnold. Votre avenir débogage auto vous remercie.
InformationsquelleAutor PnP | 2012-02-10