Remplir un tableau de chaine en C [Fermé]

Signaler
-
Messages postés
111
Date d'inscription
samedi 18 octobre 2008
Statut
Membre
Dernière intervention
29 juillet 2010
-
Bonjour,
je voudrais savoir comment remplir un tableu de chaine de caractère en C.
celà se fera dans une fonction saisie.
merci de votre réponse
A voir également:

16 réponses

Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 766
Salut,
Il faut utiliser strcpy, ou mieux encore strncpy.
Tu peux consulter ton man pour avoir le prototype.
Et tu trouveras plein d'exemple sur google ;)
Cdlt
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 766
Bah, alors c'est quoi ta question ?
ce n'était pas vraiment ma question.je me suis mal exprimée :s
en fait je me suis plantée sur un exercice le but est de:
créer un programme qui permet d'afficher la valeur numérique d'un nombre affiché en chiffres romains.
I V X L C D M (une chaine de caractère stockera les lettres servant de chaine de caractères)
1 5 10 50 100 500 1000 (ces chiffres servant de réference seront stocké dans un tableau d'entier)


ex:CXCIL==>239

merci merci

p.s:j'ai partiel demain et je ne maitrise pas encore les tableau de caractère/chaine de caractère le drame :)
aie
(une chaine de caractère servant de réference pour les chiffres romains)
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 766
Ok.
Je te propose de m'écrire l'algorithme (avec des mots). Ou si t'y arrives pas, de dire les étapes à faire.
Et je te fais le code correspondant avec les corrections ;)
1-taper une chaine de caractère.
2-mettre chaque lettre dans une case du tableau.
3-parcourir le tableau de façon à remplacer chaque caractère par la valeur correspondante.

NON?
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 766
C'est plus compliqué. Il y a un calcul à faire. En plus ce n'est pas toujours des additions, il y a aussi des soustractions lorsqu'une lettre "moins forte" est placée devant une "plus forte". Par exemple : VI = 6 et IV=4
Une bonne façon de faire un algorithme est de prendre un cas compliqué sur papier et de réfléchir comment une façon de calculer de manière automatisée.
Cdlt
du coup je vais plutot commencer par des choses plus simplis.
1-remplir un tableau de caractères.
2-remplir un tableau de chaine de caractères.
je vais poster 1(ca ne fonctionne pas)
http://pastebin.com/m33f9bbfc

1-je voudrais savoir ce qui ne va pas.
2-%s est il le bon symbol pour un caractère?

merci
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 766
Correcton
#include<stdio.h>

int main(){
	
	char tab[10];
        scanf("%9s",tab);
	printf("%s",tab);

	return 0;
}

Si tu veux impérativement tes fonctions. T'as juste à mettre le scanf dans saisir et printf dans afficher.
Cdlt
merci fiddy.
j'ai essayé ca ne marche pas.
ce que je voulais c'était taper et afficher un tableau de caractère.
ce n'est pas ce que ta fonction main fait.
merci
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 766
Bah si, c'est ce qu'elle fait.
Tu lances le programme, il attend que tu tapes une chaîne. Et une fois que tu valides par entrée, il l'affiche.
Cdlt
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 766
Salut,
Je vais te mettre un peu sur la voie.

Je pense que tu vas avoir besoin d'une fonction de conversion. En paramètre tu envoies une lettre, et ça te retourne le nombre correspondant en romain. Pour cela, tu te bases sur deux tableaux (une chaîne qui contient IVX... et un tableau d'entiers qui contient 1,5,10...)
Ensuite, une fois que tu as cette fonction, tu crées la fonction RomToDec qui se basera sur la précédente fonction.
hum...
je te fais l'algorithme suivant:
taper le nombre de caractère===>6
caractère1?:je tape m
caractère2?:a
caractère3?:i
caractère4?:s
caractère5?:o
caractère6?:n

afficher le tableau:
m a i s o n
voilà ce que je voulais
merci fiddy :)
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 766
Ben avec ma fonction dans le main, c'était plus pratique je trouve.
Tu rentres : maison
Et le tableau donne : m a i s o n.
Le résultat revient au même, sauf que c'est plus rapide. ;)
>
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016

bonsoir
je pense quelle veut voir une boucle for et lire caractere par caractere mais ton pgm est equivalent à un pgm avec une boucle "for"..
cdlt
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 766
Bon, je dois filer. Je te donne ce que j'ai fait ;)
#include <stdio.h>
#include <string.h>

int conv(char l){
    const char *lettre="IVXLCDM";
    int tab[]={1,5,10,50,100,500,1000};

    char *p=strchr(lettre,l);
    if(p==NULL) return 0;
    return tab[p-lettre];
}
   
int romain(char *ch){
    int i;
    int sum=0;
    for(i=strlen(ch)-1;i>=0;i--){
        if(conv(ch[i])>conv(ch[i+1]))
            sum+=conv(ch[i]);
        else
            sum-=conv(ch[i]);
    }

    return sum;
}

int main(void){
    char ch[16];
    printf("chaine : ");
    scanf("%s15",ch);
    printf("%d\n",romain(ch));

    return 0;
}


Mon programme suppose que la chaîne entrée par l'utilisateur est bien en Romain et qu'il n'y a pas d'erreurs.
Donc, ça peut valoir le coup, de faire une fonction qui vérifie la véracité de la chaîne (par exemple nombre de symboles successifs inférieur à 3 (ou égal), les lettres appartiennent bien au tableau.

Cdlt
Messages postés
111
Date d'inscription
samedi 18 octobre 2008
Statut
Membre
Dernière intervention
29 juillet 2010
22
Il y un moment déja, je l'avais fait ce programme... mais je ne l'ai pas gardé :s

mais moi j'avais fait la méthode inverse xD
je devais taper 3445 et le convertir en romain

et je faisais avec des modulo... mais la je sais pas trop ! lol, j'aai parler trop vite!