IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Question idiote : Faire cohabiter des int et des char dans une chaine


Sujet :

C

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 18
    Points : 10
    Points
    10
    Par défaut Question idiote : Faire cohabiter des int et des char dans une chaine
    Je suis pas sur que ce soit possible mais peut-on mettre des nombres dans une chaine de caractère ? Genre : "# 3 # 5 1024 # 7 1024"

    Sinon comment je pourrais faire pour "compter" un nombre de 0 et le rentrer dans le tableau, en le differenciant des autres nombres, n'étant pas forcement des 0 ?

    Merci pour votre réponse

  2. #2
    Débutant Avatar de miron
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    479
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 479
    Points : 291
    Points
    291
    Par défaut
    Citation Envoyé par Arry_C
    Je suis pas sur que ce soit possible mais peut-on mettre des nombres dans une chaine de caractère ? Genre : "# 3 # 5 1024 # 7 1024"

    Sinon comment je pourrais faire pour "compter" un nombre de 0 et le rentrer dans le tableau, en le differenciant des autres nombres, n'étant pas forcement des 0 ?

    Merci pour votre réponse
    j' ai du mal a comprendre ce que tu recherche...
    Et tu devrais peu etre pettre un titre plus parlant ...
    Ca peu toujours aider...
    Tant qu ety est dans ta prochaine reponse met sur qel OS tu veux le faire etc...
    Ca peux des fois servir...

  3. #3
    Membre actif Avatar de damienlann
    Profil pro
    Étudiant
    Inscrit en
    Mai 2005
    Messages
    293
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2005
    Messages : 293
    Points : 249
    Points
    249
    Par défaut
    Citation Envoyé par Arry_C
    peut-on mettre des nombres dans une chaine de caractère ?
    oui...
    Citation Envoyé par Arry_C
    Sinon comment je pourrais faire pour "compter" un nombre de 0 et le rentrer dans le tableau, en le differenciant des autres nombres, n'étant pas forcement des 0 ?
    hein??

  4. #4
    Débutant Avatar de miron
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    479
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 479
    Points : 291
    Points
    291
    Par défaut
    Citation Envoyé par damienlann
    oui...
    hein??
    Les nbs, ce sont des caracteres non?

  5. #5
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    char tab[10];
    tab[0] = '1';
    tab[1] = '2';
    tab[2] = '\0';
    Pour l'autre question, j'ai rien compris

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    Bon en clair je veux pouvoir ecrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    tab[0]=1428;
    tab[1]='#';
    tab[2]=7;
    tab[3]=1024;
    for (i=0;i<4;i++)
    {
    printf("%..." ,tab[i]);
    }
    Et que ça m'affiche : 1428 # 7 1024

  7. #7
    Débutant Avatar de miron
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    479
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 479
    Points : 291
    Points
    291
    Par défaut
    Citation Envoyé par Arry_C
    Bon en clair je veux pouvoir ecrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    tab[0]=1428;
    tab[1]='#';
    tab[2]=7;
    tab[3]=1024;
    for (i=0;i<4;i++)
    {
    printf("%..." ,tab[i]);
    }
    Et que ça m'affiche : 1428 # 7 1024
    En suposant que tab soit un char...
    1428 corespond a quel caractere???
    Non par ce que si tu met ca comme ca tu met la valeur d'un caractere dans tab[0]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    char tab[10];
    strcpy(tab,"1428");
    strcpy(tab,"#");
    strcpy(tab,"7");
    strcpy(tab,"1024");
    printf("%s",tab);
    Ca doit fonctionner...

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par miron
    En suposant que tab soit un char...
    1428 corespond a quel caractere???
    Non par ce que si tu met ca comme ca tu met la valeur d'un caractere dans tab[0]
    Je sais pas mais justement ça va afficher le caractère
    Hors je veux pouvoir differentier les caractère des nombres dans mon tableau...
    Mais je pense pas que ça soit possible.

  9. #9
    Débutant Avatar de miron
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    479
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 479
    Points : 291
    Points
    291
    Par défaut
    Citation Envoyé par Arry_C
    Je sais pas mais justement ça va afficher le caractère
    Hors je veux pouvoir differentier les caractère des nombres dans mon tableau...
    Mais je pense pas que ça soit possible.
    A mon avis tu ne peu mettre que un seul chiffre dans un espace memoire d'un tableau, ie une case du tableau quoi.
    Un tableau de char, c'est 1octet normalement, ce qui fait de 0 a 255 ce qui correspond au 225 caracteres...
    Sinon regarde mon edit precedent...
    donc tu peu pas avoir '20' dans tab[0] par exemple...
    mais tu peu avoit 2 dans tab[0] et 0 dans tab [1]...

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par miron
    A mon avis tu ne peu mettre que un seul chiffre dans un espace memoire d'un tableau, ie une case du tableau quoi.
    Un tableau de char, c'est 1octet normalement, ce qui fait de 0 a 255 ce qui correspond au 225 caracteres...
    Sinon regarde mon edit precedent...
    donc tu peu pas avoir '20' dans tab[0] par exemple...
    mais tu peu avoit 2 dans tab[0] et 0 dans tab [1]...
    Ouai mais ça va pas ça...

    En fait je veux appliquer la RLE sur une matrice qui comporte plein de 0
    Je lis donc la matrice en zig-zag et je "compte" le nombre de 0 de suite.
    Ensuite je dois remplire un tableau avec les nombres de la matrice précédente qui ne sont pas des 0 et remplacer les "i" 0 de suite par #i ainsi de suite...

    Exemple (cf Wikipedia) :

    La matrice originale

    que je dois compresser en :
    79 0 -2 -1 -1 -1 0 0 -1 #55

  11. #11
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Citation Envoyé par miron
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    char tab[10];
    strcpy(tab,"1428");
    strcpy(tab,"#");
    strcpy(tab,"7");
    strcpy(tab,"1024");
    printf("%s",tab);
    Ca doit fonctionner...
    Et non ca fonctionne pas, à chaque fois tu ecrases ce que tu as mis juste avant. Surtout que la ton tableau est trop petit...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    char tab[124];
    strcpy(tab,"1428");
    strcat(tab," # ");
    strcat(tab," 7 ");
    strcat(tab," 1024 ");
    printf("%s",tab);
    Pour ton histoire de matrice non, tu ne peux pas mettre 1428 dans un char, pourquoi?
    Deja parce que un char s'est codé sur 1 octet donc la valeur va de -127 à 127, à la limite un unsigned char mais la tu va de 0 à 255, donc non tu ne peux pas.

    La matrice originale

    que je dois compresser en :
    79 0 -2 -1 -1 -1 0 0 -1 #55
    Et alors c'est embetant de mettre ca dans un tableau de char?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sprintf(buffer, "%d %d %d %d %d %d %d %d %d #%d", 79, 0, -2, -1, -1, 0, 0, -1, 55);
    Et apres tu peux parser avec sscanf.

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par Skyrunner
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    char tab[124];
    strcpy(tab,"1428");
    strcat(tab," # ");
    strcat(tab," 7 ");
    strcat(tab," 1024 ");
    printf("%s",tab);
    Pour ton histoire de matrice non, tu ne peux pas mettre 1428 dans un char, pourquoi?
    Deja parce que un char s'est codé sur 1 octet donc la valeur va de -127 à 127, à la limite un unsigned char mais la tu va de 0 à 255, donc non tu ne peux pas.

    Et alors c'est embetant de mettre ca dans un tableau de char?
    Ben en fait ce que j'ai donner comme exemple est un exemple justement
    Donc à la place du 79 je peux être ammener à avoir 1428, donc d'après ta première réponse: oui c'est assez embetant

    Citation Envoyé par Skyrunner
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sprintf(buffer, "%d %d %d %d %d %d %d %d %d #%d", 79, 0, -2, -1, -1, 0, 0, -1, 55);
    Et apres tu peux parser avec sscanf.
    Ben comme dis précédement l'exemple de wikipedia était un exemple :
    Je ne sais pas encore combien de 0 je vais avoir de suite, ni à quel moment ils interviennent dans la matrice

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    Bon ben j'ai trouver la solution à mon problème si ça interesse quelqu'un :

    je code tous les "i" 0 par "0 i" au lieu de "# i" avec 0<i au lieu de 1<i

    Voilà même si je ne suis pas sûr d'être très clair

  14. #14
    Débutant Avatar de miron
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    479
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 479
    Points : 291
    Points
    291
    Par défaut
    Citation Envoyé par Arry_C
    Bon ben j'ai trouver la solution à mon problème si ça interesse quelqu'un :

    je code tous les "i" 0 par "0 i" au lieu de "# i" avec 0<i au lieu de 1<i

    Voilà même si je ne suis pas sûr d'être très clair
    Pas vraiement par ce que je n'ai en plus compris a quoi sert ta fonction RLE...

  15. #15
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Arry_C
    Et que ça m'affiche : 1428 # 7 1024
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf("1428 # 7 1024\n");
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    char const s[] = "1428 # 7 1024";
    printf("%s\n", s);
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf("%d # %d %d\n", 1428, 7, 1024);

  16. #16
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par miron
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    char tab[10];
    strcpy(tab,"1428");  /* 4 */
    strcpy(tab,"#");     /* + 1 = 5 */
    strcpy(tab,"7");     /* + 1 = 6 */
    strcpy(tab,"1024");  /* + 4 = 10 */
    printf("%s",tab);
    Ca doit fonctionner...
    Non. A partir de "#", c'est strcat(). Et là, ça explose, parce qu'il manque une place pour le 0 final...

    Au lieu de montrer à tout le monde que tu ne sais ni coder ni compter, va faire tes révisions...

  17. #17
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par miron
    Pas vraiement par ce que je n'ai en plus compris a quoi sert ta fonction RLE...
    C'est un algo de compression. Le séquences de 0 sont remplacées par un compteur de 0...

  18. #18
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Arry_C
    Exemple (cf Wikipedia) :

    La matrice originale

    que je dois compresser en :
    79 0 -2 -1 -1 -1 0 0 -1 #55
    Euh, tu es en train de coder l'algo JPEG ? Vu ton niveau apparent en C et ta difficulté à expliquer les choses, je le sens mal.

  19. #19
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Euh, tu es en train de coder l'algo JPEG ? Vu ton niveau apparent en C et ta difficulté à expliquer les choses, je le sens mal.

    Non je code un programme simpliste :
    chaque pixel est codé avec 3 composante :R, V et B
    Je prend 1 matrice 8x8 pour chacune des composantes
    j'applique la DCT sur chaque matrice
    Je quantifie chaque matrice
    et à la fin je compresse tout avec du RLE

    Enfin mon programme est peut-etre mal codé et je suis peut-être un goret force dix mille ( ) mais il marche (presque), et pour un prof de physique qui doit pas avoir fait beaucoups de C dans ça vie je pense que ça doit suffire.

    EDIT : Par contre j'ai un doute sur la signification du mot "exemple" ...

  20. #20
    Débutant Avatar de miron
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    479
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 479
    Points : 291
    Points
    291
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Non. A partir de "#", c'est strcat(). Et là, ça expolse, parce qu'il manque une place pour le 0 final...

    Au lieu de monter à tout le monde que tu ne sais ni coder ni compter, va faire tes révisions...
    C'est bon je m suis trompé..OK c'est pas bien...Mais bon pour une fois que je comprenais ce qui se racontais...
    Et coincidence quil manquais le \0 final, je n'avais meme pas compté...
    J'ai des progres a faire...
    Pour ce qui est des revisions... Je fait ca aussi...
    Enfin la meca flu, meca systeme electromagn et maths, c'est moin marant que l'info!!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Une question idiote basique (j'ai pourtant lu des tutos..)
    Par PMulE dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 29/08/2012, 18h17
  2. Réponses: 9
    Dernier message: 26/03/2011, 09h46
  3. [RegEx] Substituer des clé par leurs valeur dans une chaine
    Par marcha dans le forum Langage
    Réponses: 6
    Dernier message: 02/07/2010, 15h53
  4. Réponses: 3
    Dernier message: 13/09/2007, 18h11
  5. Problème de buffer avec des int et des char
    Par Lolita59 dans le forum Réseau
    Réponses: 23
    Dernier message: 04/05/2006, 11h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo