C chaine + ascii

Résolu/Fermé
capa57 Messages postés 352 Date d'inscription lundi 30 juin 2008 Statut Membre Dernière intervention 26 mai 2016 - 28 nov. 2011 à 20:29
 Utilisateur anonyme - 28 nov. 2011 à 22:25
Bonjour,
J'explique mon problème je dois faire un petit code qui demande à l'utilisateur de tapper quelque chose au clavier, tant qu'il a pas appuyé sur la touche échap, on rentre les données dans un fichier.

donc j'ai fait ceci

#include <stdio.h>

int main(char argc, char *argv[]){
char nom[20],phrase[100];
FILE *fichier;
printf("nom du fichier ? \n");
scanf("%s", nom);
fichier=fopen(nom,"w");

printf("Entrez une phrase \n");

getchar();
fgets(phrase,100,stdin);
printf("phrase : %s", phrase);
fprintf(fichier,"%s\n",phrase);

}

ça permet de créer un fichier et d'écrire une phrase dedans...

mais je suis perdu pour pouvoir dire , tant qu'on a pas appuyé sur échap, on peut rentrer ce qu'on tappe au clavier dans notre fichier....

J'ai pensé à ça (il faut que je compare avec la valeur ASCII 0x1B (échap)

while(phrase != 0x1B){
fgets(phrase,100,stdin);
fgets(phrase,100,stdin);
printf("phrase : %s \n", phrase);}
fprintf(fichier,"%s\n",phrase);
}

mais ça fonctionne pas du tout lol, je suis perdu quelqu'un peut m'aider ?


A voir également:

7 réponses

Utilisateur anonyme
28 nov. 2011 à 20:52
tu compares une chaine à un caractère, ça ne colle pas..

char c;

while ((c = getchar ()) != 0x1B) ....
0
Utilisateur anonyme
28 nov. 2011 à 20:59
et enleve 1 des 2 fgets
0
capa57 Messages postés 352 Date d'inscription lundi 30 juin 2008 Statut Membre Dernière intervention 26 mai 2016 13
28 nov. 2011 à 21:13
pas trop compris là... c'est quoi la variable c ?
0
capa57 Messages postés 352 Date d'inscription lundi 30 juin 2008 Statut Membre Dernière intervention 26 mai 2016 13
28 nov. 2011 à 21:23
#include <stdio.h>

int main(char argc, char *argv[]){
char nom[20],phrase[100], c;
FILE *fichier;
printf("nom du fichier ? \n");
scanf("%s", nom);
fichier=fopen(nom,"w");

while ((c = getchar ()) != 0x1B){
printf("Entrez une phrase \n");

fgets(phrase,100,stdin);

printf("phrase : %s", phrase);
fprintf(fichier,"%s\n",phrase);
}
}


J'ai fait ça, il me quitte bien qd je fais échap... mais maintenant il bug un peu, la 1ere phrase que je tappe il me la prends... ensuite il me demande que 1 fois sur 2 de rentrez une phrase, et quand il me les affiche, il m'enlève la 1ere lettre ...

:'(
0
capa57 Messages postés 352 Date d'inscription lundi 30 juin 2008 Statut Membre Dernière intervention 26 mai 2016 13
28 nov. 2011 à 22:01
quand je test avec une chaine de caractère par exemple quand je tappe "exit" ça fonctionne, mais j'arrive pas AVEC LE CODE ASCII :@

je comprends vraiment rien au C (c'est horrible comme langage)

#include <stdio.h>

int main(char argc, char *argv[]){
char nom[20],phrase[100], c;
FILE *fichier = NULL;
printf("nom du fichier ? \n");
scanf("%s", nom);
fichier=fopen(nom,"w");

/*while ((c = getchar ()) != 0x1B){

printf("Entrez une phrase \n");

fgets(phrase,100,stdin);
printf("phrase : %s", phrase);
fprintf(fichier,"%s\n",phrase);

}
//fclose(fichier);
}
*/

FILE *fich1 = NULL;
fich1=fopen(nom, "w");

if (fichier != NULL) {
while (strcmp(phrase, "exit") != 0) {
printf("Enter the text you want to add to the file : \n");
gets(phrase);

if (strcmp(phrase, "exit") !=0 ) {
fprintf(fichier, "%s", phrase);
fprintf(fichier, "\n");
}
}
} else {
printf("fopen did not open the file!!!\n");
}


fclose(fichier);

return 0;
}
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
28 nov. 2011 à 22:07
la premiere lettre part dans le getchar, soit tu utilises fgets mais il faudra inclure la premiere lettre dans ta chaine, soit tu n'utilises que getchar pour construire tes phrases



ça peut ressembler à ça , mais je n'ai pas testé , je n'ai pas de compilo ici ...

int i;
char c;

do
{
i=0;
printf("Entrez une phrase ou ESC pour sortir\n");

c = getchar();

while ( (c!='\n') && (c!=0x1B) && ( i<99))
{
phrase[i++]=c;
c=getchar();

}


if ( i>0)
{
phrase[i]='\0';
printf("phrase : %s", phrase);
fprintf(fichier,"%s\n",phrase);
}

}while ( c != 0x1B )



0
capa57 Messages postés 352 Date d'inscription lundi 30 juin 2008 Statut Membre Dernière intervention 26 mai 2016 13
28 nov. 2011 à 22:19
pffff tu me dégoutes... ça fonctionne lol ^^

bha merci, j'ai vraiment du mal à capter le C quoi, c'est vraiment complèxe il y a trop de fonctions... getchar() scanf printf getch() bla bla bla

en tout cas merci voici le code complet pour ceux qui veulent :)


#include <stdio.h>

int main(char argc, char *argv[]){
char nom[20],phrase[100], c;
FILE *fichier;
printf("nom du fichier ? \n");
scanf("%s", nom);
fichier=fopen(nom,"w");

int i;

do
{
i=0;
printf("Entrez une phrase ou appuyez sur ECHAP pour quitter\n");

c = getchar();

while ( (c!='\n') && (c!=0x1B) && ( i<99))
{
phrase[i++]=c;
c=getchar();

}


if ( i>0)
{
phrase[i]='\0';
printf("phrase : %s\n", phrase);
fprintf(fichier,"%s\n",phrase);
}

}while ( c != 0x1B ) ;

}
0
Utilisateur anonyme
28 nov. 2011 à 22:25
bah, tu vas vite t'y faire, un peu de pratique et ça roule (:-)

0