C chaine + ascii

Résolu
capa57 Messages postés 383 Statut Membre -  
 scribedico -
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 ?

7 réponses

  1. scribedico
     
    tu compares une chaine à un caractère, ça ne colle pas..

    char c;

    while ((c = getchar ()) != 0x1B) ....
    0
    1. scribedico
       
      et enleve 1 des 2 fgets
      0
  2. capa57 Messages postés 383 Statut Membre 13
     
    pas trop compris là... c'est quoi la variable c ?
    0
  3. capa57 Messages postés 383 Statut Membre 13
     
    #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
  4. capa57 Messages postés 383 Statut Membre 13
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. scribedico
     
    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
  7. capa57 Messages postés 383 Statut Membre 13
     
    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
  8. scribedico
     
    bah, tu vas vite t'y faire, un peu de pratique et ça roule (:-)

    0