begin process at 2012 05 30 06:56:25
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Débutant(e)

 > 

Recuperer des valeurs aprés un scanf


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Recuperer des valeurs aprés un scanf

mardi 11 octobre 2011 à 09:36:03 | Recuperer des valeurs aprés un scanf

andoid

Bonjour j'ai un probléme avec mon tableau de char:
je m'explique, j'ai

char chaine[];
scanf("%s"chaine);

si l'utilisateur met en ligne de commande
ls -l
je veux stocker dans:
chaine[0]=ls
chaine[1]=-l
ou cat fich.txt
chaine[0]=cat
chaine[1]=fich.txt

aprés ceci
mettre le contenu de chaine dans char* commande[] pour l'éxécuter.
merci!
mardi 11 octobre 2011 à 13:22:21 | Re : Recuperer des valeurs aprés un scanf

StayCrunchy

alors quand tu mets des caractères dans un tableau de char, pour "ls -l" ca donne :
chaine[0] contient "l"
chaine[1] contient "s"
chaine[2] contient " "
chaine[3] contient "-"
chaine[4] contient "l"
chaine[5] contient "\0"

un tableau de char est une chaîne de char, donc chaque case du tableau ne peut contenir qu'un seul char.

Après je te conseille de demander aux plus expérimentés si c'est bien judicieux d'utiliser scanf de cette manière.

mardi 11 octobre 2011 à 14:24:39 | Re : Recuperer des valeurs aprés un scanf

andoid

Pour éviter char[2]=" " j'ai utilisé strtok
mardi 11 octobre 2011 à 15:01:56 | Re : Recuperer des valeurs aprés un scanf

StayCrunchy

Je ne sais pas si j'ai bien compris...
Avec la chaîne "ls -l", tu veux faire deux chaines ? une avec juste "ls" et l'autre avec "-l" ?
Si oui, pourquoi ??
mardi 11 octobre 2011 à 15:47:17 | Re : Recuperer des valeurs aprés un scanf

andoid

pour pouvoir les executer avec exec
mardi 11 octobre 2011 à 18:39:29 | Re : Recuperer des valeurs aprés un scanf

pop70

Salut,
es-tu sûre d'avoir testé les codes que tu nous donnes ?

Dans:

char chaine[];
scanf("%s"chaine);



En plus du fait que ce soit "scanf ("%s",chaine); il y a 2 principaux problèmes:

- la taille de chaine n'est pas déclarée => impossible de faire un scanf.

- Comme l'a dit StayCrunchy, "chaine" est un tableau de caractères, on ne peut stocker qu'une chaine, et non plusieurs, à raison d'un
seul caractère par "case" du tableau.


Si tu souhaites stocker plusieurs chaines genre "ls" et "-l", dans un tableau, une solution est que celui-ci soit multi-dimmensionnel:
char chaines [indiceChaine][indiceCaractere];

Par exemple:


Code C/C++ :
#include <stdio.h>


int main()
{
    // Tableau à deux dimmensions

    char chaines [2][3];

    // Remplissage caractère par caractère

    chaines[0][0] = 'l';
    chaines[0][1] = 's';
    chaines[0][2] = 0; // permet de terminer la chaine, sinon printf("%s", chaines[0]) renverrait "ls-l" au lieu de "ls".

    chaines[1][0] = '-';
    chaines[1][1] = 'l';
    chaines[1][2] = 0; // termine également la chaine.

    // Remplissage par strcpy (pour aller plus vite)

    strcpy(chaines[0], "ls");
    strcpy(chaines[1], "-s");


    // Remplissage par scanf

    scanf ("%s", chaines[0]);
    scanf("%s", chaines[1]);

    // Affichage

    printf("Chaine 1 : %s\nChaine 2: %s\n", chaines[0], chaines[1]);

    return 0;
}


La différence c'est que qu'apparamment ce que tu souhaites faire c'est de ne faire qu'un seul scanf, de séparer la commande et les
options puis les répartir vers des chaines différentes.
Mais tu dis que le but est de pouvoir les éxecuter avec exec, alors pourquoi ne pas faire directement un appel systeme exec qui prend
une seule et unique chaine en argument, celle que l'utilisateur rentre ? Pourquoi faut-il les séparer ?

Et aussi:

Pour éviter char[2]=" "



un char se remplit avec des '', genre char lettre = 'x' et non char lettre = "x", car celle-ci indique une chaine, et si on les places
pour un caractère et non une chaine, cela renvoit un warning de conversion.

C++dialement,


Pop70


Cette discussion est classée dans : aprés, recuperer, chaine, scanf, char


Répondre à ce message

Sujets en rapport avec ce message

PB DE CHAINE DE CARACTERE [ par Orkblutt ] pkoi ceci me genere t'il une erreur a l'execution??#include void main(){ int o; o=2000; char* O=new char; itoa(o,O,10); char* ch="Fichier"; strcat(ch, PB DE CHAINE DE CARACTERE [ par Orkblutt ] pkoi ceci me genere t'il une erreur a l'execution??#include void main(){ int o; o=2000; char* O=new char; itoa(o,O,10); char* ch="Fichier"; strcat(ch, Chaine de Char et Memoire ! [ par Soft ] Bonjour,Qq1 connait il un moyen pour charger le contenu d'un fichier (pouvant atteindre plusieurs dizaines de MO) dans un char *buffer;Car meme avec u manipulation desformules logiques : URGENT [ par The_Legacy ] Bonjour, je suis en train de développer un petit programme qui permet d'évaluer des expression logiques telles que ((a et b) ou (c et (non d))).A part convertion CString à char[ ]! [ par souaisou ] comment convertir de cstring a une chaine de caracteres et d'un chaine de caractere a un cstring....Merci Recuperer des données dans une char [ par Johjo ] JE voudrais savoir si il y a une fonction pour recuperer des données dans une chaine de caractere. Par exemple, j'ai "voiture", je voudrais recuperer Convertion d'une string en char [ par redpooka ] Voici avec ce programme ca n'affiche juste le premier charactère comment faire pour qu'il affiche toute la chaine de caracètre ?Merci#include <iostre problème d'allocation mémoire dans ma classe [ par Bub325 ] Salut, j'ai un problème dans le code suivant au niveau de l'allocation mémoire de tmp.a = new char... dans operator+, et je ne sait pas du tout pourqu PROBLEME pour retourner un char* a partir d'un fichier [ par kobee12 ] Voici ma fonction. Elle prend en argument un caractere. A partir de ce caractere, elle renvoie la chaine qui lui est associe.Par exemple:"fichier_lang PROBLEME pour retourner un char* apres recuperation d'une chaine(sscanf) d'un fichier [ par kobee12 ] Voici ma fonction. Elle prend en argument un caractere. A partir de ce caractere, elle renvoie la chaine qui lui est associe.Par exemple:"fichier_lang


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,515 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales