Question peut-être stupide...

Résolu
Signaler
Messages postés
328
Date d'inscription
jeudi 26 août 2004
Statut
Membre
Dernière intervention
8 mars 2007
-
Messages postés
328
Date d'inscription
jeudi 26 août 2004
Statut
Membre
Dernière intervention
8 mars 2007
-
Bonjour,
je suis en train de programmer un petit programme et je voudrais qu'en faisant
c=mafonction();
c étant un char, me retourne une variable contenu dans la fonction mafonction(); qui est une variable char. Comment faire ???
J'avais pensé a un return, mais ca ne fonctionne pas... Ou si c'est cela, expliquez-moi comment...





Merci

bloom1

22 réponses

Messages postés
65
Date d'inscription
dimanche 8 janvier 2006
Statut
Membre
Dernière intervention
27 février 2011
1
Bonjour
Pour que la fonction retourne un type il faut la renseigner dans la définition
char ma_fonction(void);

Et dans le code
char ma_fonction(void)
{
char carac;
...
...
return(carac);
}

Et dans la fonction (main par exemple) tu peux écrire ton truc => c=ma_fonction();
(tu récupères la valeur de carac mais cette variable devient hors de portée après le return...)
++
Messages postés
328
Date d'inscription
jeudi 26 août 2004
Statut
Membre
Dernière intervention
8 mars 2007

me retourne une variable contenu dans la fonction mafonction(); qui est une variable char. Comment faire ???
En fait, je voudrais que la fonction me retourne une variable nommée carac qui est un char.

J'ai corrigé cela parce que ce n'étais pas compréhensible... lol :p

bloom1
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
16
err... tu fait
return carac;

___________________________________________
Les plus grands esprits trouvent toujours une solution
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
16
Hmm bon. Il te faut des bon tutoriaux. Va voir sur http://c.developpez.com/cours/
En attendant voici un petit exemple de fonction retournant un char

char MaFonction (void)
{
char Test = 'c';

return Test;
}

Et voila. C'est pas très compliquer.

___________________________________________
Les plus grands esprits trouvent toujours une solution
Messages postés
328
Date d'inscription
jeudi 26 août 2004
Statut
Membre
Dernière intervention
8 mars 2007

Ok merci je vais tester et si ca fonctionne, Réponse Acceptée

bloom1
Messages postés
328
Date d'inscription
jeudi 26 août 2004
Statut
Membre
Dernière intervention
8 mars 2007

Grrr.
En fait je programme un Kernel lool j'avais déja essayé... C'est pour la fonction getch que j'ai reprogrammé... Mais toujours rien... :( :(

bloom1
Messages postés
65
Date d'inscription
dimanche 8 janvier 2006
Statut
Membre
Dernière intervention
27 février 2011
1
la renseigner lors du prototye* de la fonction:
char ma_fonction(void);
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
16
Comment ça toujours rien. C'est quasi impossible. Post la partie de ton code qui ne fonctionne pas.

___________________________________________
Les plus grands esprits trouvent toujours une solution
Messages postés
328
Date d'inscription
jeudi 26 août 2004
Statut
Membre
Dernière intervention
8 mars 2007

C'est correct, ca me retourne de quoi, mais la il reste à l'afficher(P.S : je programme un kernel[OS])

bloom1
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
16
A mais c'est ce que je disais. Pour afficher, il faut écrire directement dans la mémoire video. Petit indice la mémoire video est localiser à l'adresse 0xB8000

___________________________________________
Les plus grands esprits trouvent toujours une solution
Messages postés
328
Date d'inscription
jeudi 26 août 2004
Statut
Membre
Dernière intervention
8 mars 2007

Je le sais, ma librairie vidéo est faite au complet, j'ai même fais une fonction pour changer la couleur du texte et son fond, et même une fonction pour scroller... J'ai tout fais ces étapes, il me manque juste mon read...

bloom1
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
16
En fesant ceci ((*(volatile BYTE *) (0xB8000)) = ('c')) tu va te trouver à écrire c à l'écran. Pour écrire une autre lettre après c'est ((*(volatile BYTE *) (0xB8002)) = ('c')) et ça va afficher cc. C'est tout.

___________________________________________
Les plus grands esprits trouvent toujours une solution
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
16
Ha oki.

___________________________________________
Les plus grands esprits trouvent toujours une solution
Messages postés
328
Date d'inscription
jeudi 26 août 2004
Statut
Membre
Dernière intervention
8 mars 2007

lol
Même de ca, je suis capable d'écrire des chaines de caractères, et des lettres une a unes grace a deux fonctions : une c'est putlettre (ca dit tout) et l'autre c'est printfs qui utilise putlettre pour écrire des chaines (et j'ai réussi a recréer la fonction printf avec mon printfs)

bloom1
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
16
Hmmm c'est bien est tu capable de géré le clavier?

___________________________________________
Les plus grands esprits trouvent toujours une solution
Messages postés
328
Date d'inscription
jeudi 26 août 2004
Statut
Membre
Dernière intervention
8 mars 2007

Oui c'est avec l'interruption 64, j'ai réussi a faire un keymap, et de retourner un char mais il est pas bon le char qui retourne lol va falloir que j'arrange ca

bloom1
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
16
Oui je sais. Il faut convertir la valeur renvoyer en ANSI
essais ça. Arrange le tableau car moi c'est pour un clavier canadien français.

BYTE ConvertKeyToAscii (BYTE Key)
{
static const BYTE key_normal[] =
{
0, 0x1B, '1', '2', '3', '4', '5', '6',
'7', '8', '9', '0', '-', '=', 0x01, '\t',
'q', 'w', 'e', 'r', 't', 'y', 'u', 'i',
'o', 'p', '^', '¸', '\r', 0, 'a', 's',
'd', 'f', 'g', 'h', 'j', 'k', 'l', ';',
'ù', '²', 0, '«', 'z', 'x', 'c', 'v',
'b', 'n', 'm', ',', '.', 'é', 0, '*',
0, ' ', 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, '7',
'8', '9','-', '4','5','6', '+', '1',
'2', '3','0','.',0, 0, '<', 0,
0
};

return key_normal[Key];
}

BYTE Key = NULL;
/* tu récupère les out du clavier dans Key*/
if(Key <= 0x80) /* si le boutton est pressé */
Key = ConvertKeyToAscii(Key&0x7F);

Key va être après en valeur ansi et correctement utilisable

___________________________________________
Les plus grands esprits trouvent toujours une solution
Messages postés
328
Date d'inscription
jeudi 26 août 2004
Statut
Membre
Dernière intervention
8 mars 2007

Moi aussi je suis sur un clavier canadien Francais, j'habite au Québec lol
Mais si on appuie sur la touche SHIFT ??? lol moi j'ai une keymap avec les majuscules intégrées... Il faudrait qu'on puisse gérer le SHIFT :p
Mais si on veux stocker les lettres dans une variable, pour pouvoir ensuite vérifier quelle commande a été tappée, comment fait-on ???

bloom1
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
16
pffffffffffff. D'après moi tes plus avancé que moi dans ce domaine. J'ai arrêter ce projet pour me concentrer sur ma librairie graphique. Désolé.
p.s. Content de voir que je suis pas le seul Québecois ici.

___________________________________________
Les plus grands esprits trouvent toujours une solution
Messages postés
328
Date d'inscription
jeudi 26 août 2004
Statut
Membre
Dernière intervention
8 mars 2007

Ta librarie graphique... C'est quoi ta librairie graphique ?
bloom1