J'ai besoin d'un Guru C++

J'ai besoin d'un Guru C++ - C++ - Programmation

Marsh Posté le 01-07-2003 à 12:14:32    

Bonjour, j'ai besoin de confirmation sur les questions suivantes pour un test.
Merci de me donner un petit coup de main.
Désolé c'est en anglais ...
 
Ca débute par un squelette de programme avec 2 questions :
 
  50        char * p;
  200       p=test();
  201-300   /* we want to use 'p' here*/
  2000      char * test()
What might go between the parentheses in this particular situation?  
  2001      {
  2002      char buf[8];
  2003-2050 /* unspecified, buf defined here *./
  2051      return (char *) buf;
What is the construction '(char *)' called and what does it do?  What do the constructions of that name do in general?
  2052      }
   
 
Ensuite d'autres questions:
 
1. Is this a reasonable function?  
 
2. Will it work at all?  
 
3. Is it good practice, and why?
 
4. How, exactly, could one get a second 'char *' to use back from this function?  Be specific in terms of the exact syntax needed.  Another way to state this question is how can this function be modified to return a 'char *' from the function, and an additional 'char *' value in one function call.  Please make sure that your answer will work even if the size of the char * desired is not known in the outside calling function.  Avoid C++ syntax.  Include statements in called and calling functions.  Use good programming practice.  Although alternatives are acceptable, for this question, please include an answer which maintains the original return type.
 
5. What's the difference between a system call and library function?
 
Merci de votre aide !

Reply

Marsh Posté le 01-07-2003 à 12:14:32   

Reply

Marsh Posté le 01-07-2003 à 12:23:28    

en tout cas on te dit que t'as qu'a posté ça dans la cat C, et tenté la traduction de voila.fr.
 
et surtout, si par hasard quelqu'un veut faire tes devoirs, tu peux prendre au moins la peine de structurer un peu.

Reply

Marsh Posté le 01-07-2003 à 12:31:00    

skoi ste blague ?
 
deja essaye de faire un post lisible

Reply

Marsh Posté le 01-07-2003 à 12:32:03    

Jeune fou !

Reply

Marsh Posté le 01-07-2003 à 13:09:04    

++Taz a écrit :

en tout cas on te dit que t'as qu'a posté ça dans la cat C, et tenté la traduction de voila.fr.
 
et surtout, si par hasard quelqu'un veut faire tes devoirs, tu peux prendre au moins la peine de structurer un peu.


 
Ah j'ai pas traduit, personne n'est anglophile par là ?
 
La premiere partie consiste en un squelette de programme avec des numéros de lignes ...
Les autres questions sont sur le petit programme.
C'est un petit questionnaire pour un travail aux US.  
Comme je ne fais pas de C/C++ depuis 3 ans je voulais vérifier.
 
Bref tant pis ...  
Et Jeune fou .. euh ... je pense être plus vieux enfin bref ...  

Reply

Marsh Posté le 01-07-2003 à 13:13:29    

:heink:  Vérifier quoi t'a même pas mis tes réponses?
 
Ca faisait longtemps qu'on en avait pas vu un comme ça :ouch:


---------------
Le Tyran
Reply

Marsh Posté le 01-07-2003 à 13:39:28    

ouais, dis nous plutot ce que tu penses que ce code va faire et ensuite ben peut etre qu'on te dira si t'as juste ou pas[:spamafote]
EDIT : En plus t'as meme pas pris la peine de faire une recherche avant de poster  :pfff:  
 
http://forum.hardware.fr/forum2.ph [...] h=&subcat=


Message édité par polo021 le 01-07-2003 à 13:43:22
Reply

Marsh Posté le 01-07-2003 à 13:51:23    

polo021 a écrit :

ouais, dis nous plutot ce que tu penses que ce code va faire et ensuite ben peut etre qu'on te dira si t'as juste ou pas[:spamafote]
EDIT : En plus t'as meme pas pris la peine de faire une recherche avant de poster  :pfff:  
 
http://forum.hardware.fr/forum2.ph [...] h=&subcat=


 
ok j'ai ca a la maison je ferai ce soir, je suis au travail j avais pas envi de tout retaper ...
merci pour le lien

Reply

Marsh Posté le 01-07-2003 à 13:55:42    

LetoII a écrit :

:heink:  Vérifier quoi t'a même pas mis tes réponses?
 
Ca faisait longtemps qu'on en avait pas vu un comme ça :ouch:  


 
Merci de rester poli et respectueux ... Faire preuve de ce genre de supériorité ne sert à rien.  
Autant s'abstenir ! Merci

Reply

Marsh Posté le 01-07-2003 à 14:08:03    

cow2 a écrit :


 
Merci de rester poli et respectueux ... Faire preuve de ce genre de supériorité ne sert à rien.  
Autant s'abstenir ! Merci


 
 :heink:  
 
Désolez vieux mais j'ai assez à faire avec mon boulot sans en plus faire le tien.
 
Edit: en plus je parlais du topic et pas du posteur.


Message édité par LetoII le 01-07-2003 à 14:09:30

---------------
Le Tyran
Reply

Marsh Posté le 01-07-2003 à 14:08:03   

Reply

Marsh Posté le 01-07-2003 à 14:19:47    

LetoII a écrit :


 
 :heink:  
 
Désolez vieux mais j'ai assez à faire avec mon boulot sans en plus faire le tien.


 
Bien oui. Moi je demande un petit service, de façon poli.
Les explications que j'ai données n'étaient peut être pas si claires que ça.
On me le dit et j'explique.  
Mais me faire traiter de rigolo par les gens d'ici de but en blanc, je ne vois pas l'intérêt.
Il y a d'autres lieux pour se défouler ...
 

LetoII a écrit :


 
Edit: en plus je parlais du topic et pas du posteur.


Désolé d'avoir mal interprété mais ta phrase était bien ambigüe ...

Reply

Marsh Posté le 01-07-2003 à 14:21:54    

Disons qu'on a souvent d emauvaise experience de gens qui viennent poster leur devoir/Tp/TD sans plus de remerciement ou d'explications, d'ou notre acceuille un peu froid.

Reply

Marsh Posté le 01-07-2003 à 14:22:07    

cow2 a écrit :


 
Bien oui. Moi je demande un petit service, de façon poli.
Les explications que j'ai données n'étaient peut être pas si claires que ça.
On me le dit et j'explique.  
Mais me faire traiter de rigolo par les gens d'ici de but en blanc, je ne vois pas l'intérêt.
Il y a d'autres lieux pour se défouler ...
 
 
Désolé d'avoir mal interprété mais ta phrase était bien ambigüe ...


 
C par ce qu'on a vu passer trop detopic à la con qui commencent comme le tien, on a tendence à partir au quart de tour :D


---------------
Le Tyran
Reply

Marsh Posté le 01-07-2003 à 14:22:33    

grillaid binome :p

Reply

Marsh Posté le 01-07-2003 à 18:11:14    

Bon voilà ce que je répondrais.
En gros le C/C++ ça fait 5 ou 6 ans que je n'y touche plus ... d'où ma question ...
 

cow2 a écrit :

Bonjour, j'ai besoin de confirmation sur les questions suivantes pour un test.
Merci de me donner un petit coup de main.
Désolé c'est en anglais ...
 
Ca débute par un squelette de programme avec 2 questions :
 
  50        char * p;
  200       p=test();
  201-300   /* we want to use 'p' here*/
  2000      char * test()
What might go between the parentheses in this particular situation?  


là c'est fastoche ce sont les arguments de la fonction test ...
 

cow2 a écrit :


  2001      {
  2002      char buf[8];
  2003-2050 /* unspecified, buf defined here *./
  2051      return (char *) buf;
What is the construction '(char *)' called and what does it do?  What do the constructions of that name do in general?


 
là aussi fastoche, char * est un pointeur sur une chaine de caracteres.  
 
  2052      }

cow2 a écrit :


 
Ensuite d'autres questions:
 
1. Is this a reasonable function?  
 


 
bien non ça retourne l'adresse d'une variable sur la pile
 

cow2 a écrit :


2. Will it work at all?  
 


 
ça ne fonctionnera que par chance, si la mémoire n'a pas été utilisée pour autre chose
 

cow2 a écrit :


3. Is it good practice, and why?


Non, il faut mettre au moins un static buf[8], voire un malloc si on est courageux
 

cow2 a écrit :


4. How, exactly, could one get a second 'char *' to use back from this function?  Be specific in terms of the exact syntax needed.  Another way to state this question is how can this function be modified to return a 'char *' from the function, and an additional 'char *' value in one function call.  Please make sure that your answer will work even if the size of the char * desired is not known in the outside calling function.  Avoid C++ syntax.  Include statements in called and calling functions.  Use good programming practice.  Although alternatives are acceptable, for this question, please include an answer which maintains the original return type.


 
Là je suppose qu'il faut utiliser un argument à la fonction test.
L'énoncé n'est pas clair, mais je dirais :
 
char * test(char **ppvalue)
{
 
static char buf[8];
strcpy(*ppvalue,buf)
return (char *) buf
}
 

cow2 a écrit :


5. What's the difference between a system call and library function?


 
A part dire que l'un vient du noyau et l'autre pas je vois rien de très spirituel à dire ici
 

cow2 a écrit :


Merci de votre aide !


 
Des commentaires? Merci ...

Reply

Marsh Posté le 01-07-2003 à 18:34:43    

1/ Je pense plutot qu'il veulent dire qu'il ne faut rien mettre (pas d'arguments)
2/ La encore c'est une autre reponse qui est attendu je pense: il s'agit d'un cast
 
Pour la suite, faut voir tes reponses ne sont pas fausses mais je me demande encore si ce sont les reponses attendues.


Message édité par Angel_Dooglas le 01-07-2003 à 18:36:05
Reply

Marsh Posté le 02-07-2003 à 08:36:50    

J'ai jeté un rapide coup d'oeuil ça a l'air d'être ça, je regarderai plus en détail plus tard.


---------------
Le Tyran
Reply

Marsh Posté le 02-07-2003 à 09:39:29    

cow2 a écrit :


là aussi fastoche, char * est un pointeur sur une chaine de caracteres.  
 


 
 :non: C'est un cast vers le type char*, ce qui veut dire que el programme interprèéte différament les données contenue dans la variable.


---------------
Le Tyran
Reply

Marsh Posté le 02-07-2003 à 10:31:30    

LetoII a écrit :


 
 :non: C'est un cast vers le type char*, ce qui veut dire que el programme interprèéte différament les données contenue dans la variable.


 
Ah les casts j'avais oublié ce truc là
Bon si le reste est correct c'est cool, j'envoie ca ce soir.
Merci ... finalement j'ai pas tout oublié

Reply

Marsh Posté le 02-07-2003 à 18:43:48    

Je me permet de mettre mon grain de sel.
 
Deja dans le code il faut placer la déclaration de la fonction avant l'appel.
 
De plus tu peux remplacer  

Code :
  1. char * test()
  2. {
  3.   char buf[8];
  4.   /* bla bla bla */
  5.   return (char *) buf;
  6. }


par

Code :
  1. char * test()
  2. {
  3.   char *buf = new char[8];
  4.   /* bla bla bla */
  5.   return buf;
  6. }


et la ca marche sans probleme.


Message édité par MorFinBaZ le 02-07-2003 à 18:44:35
Reply

Marsh Posté le 02-07-2003 à 20:09:10    

MorFinBaZ a écrit :

Je me permet de mettre mon grain de sel.
 
Deja dans le code il faut placer la déclaration de la fonction avant l'appel.


Pas nécessairement, suffit de mettre un proto.
 

MorFinBaZ a écrit :


De plus tu peux remplacer  

Code :
  1. char * test()
  2. {
  3.   char buf[8];
  4.   /* bla bla bla */
  5.   return (char *) buf;
  6. }


par

Code :
  1. char * test()
  2. {
  3.   char *buf = new char[8];
  4.   /* bla bla bla */
  5.   return buf;
  6. }


et la ca marche sans probleme.


 
Me semble qua ça a déja été dit


---------------
Le Tyran
Reply

Marsh Posté le 02-07-2003 à 20:13:26    

Surtout qu'il ne faut pas utiliser de C++...
Des fois on se demande si les gens lisent les enonces :o  
Mais comme mon post c'est du caca :o

Reply

Marsh Posté le 02-07-2003 à 21:15:03    

Angel_Dooglas a écrit :

Surtout qu'il ne faut pas utiliser de C++...
Des fois on se demande si les gens lisent les enonces :o  
Mais comme mon post c'est du caca :o
 


 
vi c'est du C me suis planté de rubrique.  :p  
Merci quand meme

Reply

Marsh Posté le 03-07-2003 à 00:45:09    

LetoII a écrit :


Pas nécessairement, suffit de mettre un proto.

Yepa exactement :)  declaration != definition
(enfin c'est le vocabulaire que j'ai apris a la fac hein)

Reply

Marsh Posté le 04-07-2003 à 08:24:59    

MorFinBaZ a écrit :

Yepa exactement :)  declaration != definition
(enfin c'est le vocabulaire que j'ai apris a la fac hein)


la declaration c'est le proto et la definition c'est la fonction en elle meme (avec tout le code)

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed