Redirection vers un fichier
Résolu
Utilisateur anonyme
-
Utilisateur anonyme -
Utilisateur anonyme -
salut à tous,
je travaille sur VS8 en C et je voudrai savoir comment lire a partir du clavier et ecrire dans un fichier
j'ai essayé fprintf(file,"%s",stdin);
et ça n'a pas marché et ce que quelqu'un pourrait m'expliquer pourquoi?
merci
je travaille sur VS8 en C et je voudrai savoir comment lire a partir du clavier et ecrire dans un fichier
j'ai essayé fprintf(file,"%s",stdin);
et ça n'a pas marché et ce que quelqu'un pourrait m'expliquer pourquoi?
merci
A voir également:
- Redirection vers un fichier
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Fichier .dat - Guide
5 réponses
Oui, stdin est de type FILE* et nom de type char* !
le déréférencement de stdin ne donne donc pas une chaine de caractère.
Je pense qu'il faut créer un pipe entre les deux (voir fonction popen() et reopen())
le déréférencement de stdin ne donne donc pas une chaine de caractère.
Je pense qu'il faut créer un pipe entre les deux (voir fonction popen() et reopen())
salut char snipeur et merci pour votre aide
j'ai trouvé une solution en faisant ceci:
char buffer[256];
gets(buffer);
fprintf(file,"%10s",buffer); //parce que je veut ecrire une chaine sur 10 caract
ça a marché mais le pb c'est que lorsque je saisie plus de 10 caractère le pb les ecrit toutes
j'ia voulue changé un peut l'allure alors j'ai écrit une fonction:
void read_string(char *s,unsigned int num){ //lecture sécurisé avec vidage du tampon
int c;
fgets(s,num,stdin);
char *p = s + strlen(s) -1;
if(*p = '\n'){ //si fin newline est rencontré
*p = '\0';
}else{ //vider le tampon
c = getchar();
while( (c!=EOF) && (c!='\n') )
c = getchar();
}
}
et après
char buffer[256];
read_string (buffer,20);
fprintf(in,"%-20",buffer);
la lecture se fait très bien avec le nombre max de caractère que je veux
sauf que l'ecriture dans le fichier ne se fait pas
je ne vois pas ou est le pb
si vous avez une idéé j'en suis preneur
j'ai trouvé une solution en faisant ceci:
char buffer[256];
gets(buffer);
fprintf(file,"%10s",buffer); //parce que je veut ecrire une chaine sur 10 caract
ça a marché mais le pb c'est que lorsque je saisie plus de 10 caractère le pb les ecrit toutes
j'ia voulue changé un peut l'allure alors j'ai écrit une fonction:
void read_string(char *s,unsigned int num){ //lecture sécurisé avec vidage du tampon
int c;
fgets(s,num,stdin);
char *p = s + strlen(s) -1;
if(*p = '\n'){ //si fin newline est rencontré
*p = '\0';
}else{ //vider le tampon
c = getchar();
while( (c!=EOF) && (c!='\n') )
c = getchar();
}
}
et après
char buffer[256];
read_string (buffer,20);
fprintf(in,"%-20",buffer);
la lecture se fait très bien avec le nombre max de caractère que je veux
sauf que l'ecriture dans le fichier ne se fait pas
je ne vois pas ou est le pb
si vous avez une idéé j'en suis preneur
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question