Je suis on ne peut plus débutant en c/c++ , et je suis confronté à un
problème que je n'arrive pas à résoudre.
J'ai crée un petit client irc de base dans le but d'en faire une espèce de
robot à tout faire que j'améliorerai en fonction de mes idées du moment ...
ceci dit , 2 questions :
1) comment faire de mon programme un exe tournant en "toile de fond" ( cad
pas etre obligé de conserver la fenetre de ligne de cmd sous XP pour que le
prog tourne ) ?
2) apres un premier lancement , je voudrai crée un fichier de config
regroupant les infos principales ( server , channel , nickname .. )
permettant ensuite de relancer le client a partir de ce fichier sans avoir a
indiquer les arg en ligne de commande
void config_pass(int i , char* data)
{
FILE* Config;
Config = fopen("iBot.txt","w");
if (i == 1) { printf("Server : "); fputs(data, Config); fputs("\n",
Config); }
if (i == 2) { printf("Port : "); fputs(data, Config); }
if (i == 3) { printf("Channel : "); /* printf(data, Config); printf("\n",
Config); */ }
( ... )
}
bon je me doute que ca doit être un peu fouilli et pas du tout optimisé ...
i correspond en gros au nombre d'arguments en ligne de commande
en fait , je cherche un moyen de faire le fichier iBot.txt de facon
convenable , parce que avec tous mes essais ( essais avec fputs / fwrite /
... enfin un peu tout ) , le data correspondant a la chaine de caractères de
chaque arg s'ecrit bien dans le fichier .txt , mais uniquement sur la
premiere ligne , et ce en effacant bien entendu ce qui avait été ecrit
précédemment
exemple : server irc.epiknet.org
port : 6667
->> donne en premiere ligne : 6667epiknet.org au deuxieme tour
donc en gros , j'aimerai savoir comment faire sauter une ligne pour avoir
chaque ch de caractères de chaque arg sur une ligne différente :)
bon je sais c c confus ... pardonnez mon langage de débutant , j'ai voulu
etre le plus clair possible
| Gabriel Dos Reis wrote: | | > Loïc Joly writes: | > | > | que le C++ (dans le sens son étendue est plus limitée, il est plus | > | facile de le maitriser complètement). | > | > ce point n'est pas évident. | | Ah ?
Oui.
| Rappel: | Par maitriser complètement, j'entendais "connaître tout le | fonctionnement du langage" et non pas "faire des programmes corrects".
J'ai bien compris ce point.
| Par rapport à cette définition, exite-t-il des composantes du C qui | soient plus complexes à étudier que par exemple les règles de résolution | de surcharges, les template template, les spécialisations partielles, | les petites incohérences du langage (vector<vector<int>>), les règles | différentes selon qu'il s'agit d'une fonction normale ou d'une fonction | générée par un template...
Tu penses impressioner en alignant des mots barbares ?
#include <stdio.h>
struct Point { int coord[2]; };
void print_value(int *p) { printf("%d", *p); }
void set_value(int *p, v) { *p = v; }
struct Point make_point(int a, int b) { struct Point p = {{a, b}}; return p; }
int main() { print_value(set_value(make_point(3, 4), 8)); // #1 int *p = make_point(467, 39).coord; // #2 }
Que fait #1 ?
Est-ce que #2 est bien formé ?
(on verra les questions subsidiaires plus tard).
-- Gaby
Loïc Joly <loic.actarus.joly@wanadoo.fr> writes:
| Gabriel Dos Reis wrote:
|
| > Loïc Joly <loic.actarus.joly@wanadoo.fr> writes:
| >
| > | que le C++ (dans le sens son étendue est plus limitée, il est plus
| > | facile de le maitriser complètement).
| >
| > ce point n'est pas évident.
|
| Ah ?
Oui.
| Rappel:
| Par maitriser complètement, j'entendais "connaître tout le
| fonctionnement du langage" et non pas "faire des programmes corrects".
J'ai bien compris ce point.
| Par rapport à cette définition, exite-t-il des composantes du C qui
| soient plus complexes à étudier que par exemple les règles de résolution
| de surcharges, les template template, les spécialisations partielles,
| les petites incohérences du langage (vector<vector<int>>), les règles
| différentes selon qu'il s'agit d'une fonction normale ou d'une fonction
| générée par un template...
Tu penses impressioner en alignant des mots barbares ?
#include <stdio.h>
struct Point {
int coord[2];
};
void print_value(int *p)
{
printf("%d", *p);
}
void set_value(int *p, v)
{
*p = v;
}
struct Point make_point(int a, int b)
{
struct Point p = {{a, b}};
return p;
}
int main()
{
print_value(set_value(make_point(3, 4), 8)); // #1
int *p = make_point(467, 39).coord; // #2
}
| Gabriel Dos Reis wrote: | | > Loïc Joly writes: | > | > | que le C++ (dans le sens son étendue est plus limitée, il est plus | > | facile de le maitriser complètement). | > | > ce point n'est pas évident. | | Ah ?
Oui.
| Rappel: | Par maitriser complètement, j'entendais "connaître tout le | fonctionnement du langage" et non pas "faire des programmes corrects".
J'ai bien compris ce point.
| Par rapport à cette définition, exite-t-il des composantes du C qui | soient plus complexes à étudier que par exemple les règles de résolution | de surcharges, les template template, les spécialisations partielles, | les petites incohérences du langage (vector<vector<int>>), les règles | différentes selon qu'il s'agit d'une fonction normale ou d'une fonction | générée par un template...
Tu penses impressioner en alignant des mots barbares ?
#include <stdio.h>
struct Point { int coord[2]; };
void print_value(int *p) { printf("%d", *p); }
void set_value(int *p, v) { *p = v; }
struct Point make_point(int a, int b) { struct Point p = {{a, b}}; return p; }
int main() { print_value(set_value(make_point(3, 4), 8)); // #1 int *p = make_point(467, 39).coord; // #2 }
Que fait #1 ?
Est-ce que #2 est bien formé ?
(on verra les questions subsidiaires plus tard).
-- Gaby
Gabriel Dos Reis
ricky writes:
| > Je ne suis pas sur que ce soit le cas. Le C est un langage plus simple | > que le C++ (dans le sens son étendue est plus limitée, il est plus | > facile de le maitriser complètement). | | cela reste vraiment a prouver, et je connais pas mal de contre exemples ...
Entièrement d'accord.
-- Gaby
ricky <eric_nyme@yahoo.fr> writes:
| > Je ne suis pas sur que ce soit le cas. Le C est un langage plus simple
| > que le C++ (dans le sens son étendue est plus limitée, il est plus
| > facile de le maitriser complètement).
|
| cela reste vraiment a prouver, et je connais pas mal de contre exemples ...
| > Je ne suis pas sur que ce soit le cas. Le C est un langage plus simple | > que le C++ (dans le sens son étendue est plus limitée, il est plus | > facile de le maitriser complètement). | | cela reste vraiment a prouver, et je connais pas mal de contre exemples ...
Entièrement d'accord.
-- Gaby
_M.B._
"Jonathan Mcdougall" a écrit dans le message news: U7Gfb.60070$
Oui, c'est juste un groupe usenet qui, tant bien que mal, essaie de se comporter comme un groupe usenet. Ce qui est rare - simple constatation.
Non, pas comme un autre, surement pas. Un microcosme et du nombrilisme.
C'est pas partout comme ca, heureusement.
Je te redemande de régler tes problèmes en privé, si tu en as.
T'es gentil, tu vas au dodo, c'est l'heure.
MB
"Jonathan Mcdougall" <jonathanmcdougall@DELyahoo.ca> a écrit dans le message
news: U7Gfb.60070$1M6.1171864@wagner.videotron.net...
Oui, c'est juste un groupe usenet qui, tant bien que mal,
essaie de se comporter comme un groupe usenet.
Ce qui est rare - simple constatation.
Non, pas comme un autre, surement pas.
Un microcosme et du nombrilisme.
C'est pas partout comme ca, heureusement.
Je te redemande de régler tes problèmes en privé, si tu en as.
Tu penses impressioner en alignant des mots barbares ? Non, je pensais juste sortir des truc compliqués du C++ qui n'ont pas
d'équivalent en C.
#include <stdio.h>
struct Point { int coord[2]; };
void print_value(int *p) { printf("%d", *p); }
void set_value(int *p, v) { *p = v; }
struct Point make_point(int a, int b) { struct Point p = {{a, b}}; Je suppose que toute la difficulté est la conséquence de cette ligne...
return p; }
int main() { print_value(set_value(make_point(3, 4), 8)); // #1 int *p = make_point(467, 39).coord; // #2 }
Je ne connais pas le C, mais je vais essayer de répondre en devinant...
Que fait #1 ?
Je dirais une erreur de compilation : set_value n'a pas de valeur de retour.
Est-ce que #2 est bien formé ?
J'aurais intuitivement dit oui, mais je suppose que la vérité est ailleur.
-- Loïc
Gabriel Dos Reis
Loïc Joly writes:
| Gabriel Dos Reis wrote: | | > Loïc Joly writes: | | [snip] | > Tu penses impressioner en alignant des mots barbares ? | Non, je pensais juste sortir des truc compliqués du C++ qui n'ont pas | d'équivalent en C.
Cela n'est pas parce que certaines constructions C++ n'ont pas d'équivalent en C que la maîtrise de C devient du coup plus facile. Je pourrais te citer des langages qui ont des fonctionnalités avancées sans équivalence en C++, la maîtrise de C++ ne paraît pas plus facile autant.
int *set_value(int *p, int v) { *p = v; return p; }
| > struct Point make_point(int a, int b) | > { | > struct Point p = {{a, b}}; | Je suppose que toute la difficulté est la conséquence de cette ligne...
Pas vraiment.
| | > return p; | > } | > | > int main() | > { | > print_value(set_value(make_point(3, 4), 8)); // #1 | > int *p = make_point(467, 39).coord; // #2 | > } | > | Je ne connais pas le C, mais je vais essayer de répondre en devinant... | | > Que fait #1 ? | | Je dirais une erreur de compilation : set_value n'a pas de valeur de retour.
OK. Mais que #1 avec la correction ?
| | > Est-ce que #2 est bien formé ? | | J'aurais intuitivement dit oui, mais je suppose que la vérité est ailleur.
donc, "p" pointe sur un objet ? C'est ça ? Si oui, quelle sa durée de stockage ?
-- Gaby
Loïc Joly <loic.actarus.joly@wanadoo.fr> writes:
| Gabriel Dos Reis wrote:
|
| > Loïc Joly <loic.actarus.joly@wanadoo.fr> writes:
|
| [snip]
| > Tu penses impressioner en alignant des mots barbares ?
| Non, je pensais juste sortir des truc compliqués du C++ qui n'ont pas
| d'équivalent en C.
Cela n'est pas parce que certaines constructions C++ n'ont pas
d'équivalent en C que la maîtrise de C devient du coup plus facile.
Je pourrais te citer des langages qui ont des fonctionnalités avancées
sans équivalence en C++, la maîtrise de C++ ne paraît pas plus facile
autant.
int *set_value(int *p, int v)
{
*p = v;
return p;
}
| > struct Point make_point(int a, int b)
| > {
| > struct Point p = {{a, b}};
| Je suppose que toute la difficulté est la conséquence de cette ligne...
Pas vraiment.
|
| > return p;
| > }
| >
| > int main()
| > {
| > print_value(set_value(make_point(3, 4), 8)); // #1
| > int *p = make_point(467, 39).coord; // #2
| > }
| >
| Je ne connais pas le C, mais je vais essayer de répondre en devinant...
|
| > Que fait #1 ?
|
| Je dirais une erreur de compilation : set_value n'a pas de valeur de retour.
OK. Mais que #1 avec la correction ?
|
| > Est-ce que #2 est bien formé ?
|
| J'aurais intuitivement dit oui, mais je suppose que la vérité est ailleur.
donc, "p" pointe sur un objet ? C'est ça ? Si oui, quelle sa durée de
stockage ?
| Gabriel Dos Reis wrote: | | > Loïc Joly writes: | | [snip] | > Tu penses impressioner en alignant des mots barbares ? | Non, je pensais juste sortir des truc compliqués du C++ qui n'ont pas | d'équivalent en C.
Cela n'est pas parce que certaines constructions C++ n'ont pas d'équivalent en C que la maîtrise de C devient du coup plus facile. Je pourrais te citer des langages qui ont des fonctionnalités avancées sans équivalence en C++, la maîtrise de C++ ne paraît pas plus facile autant.
int *set_value(int *p, int v) { *p = v; return p; }
| > struct Point make_point(int a, int b) | > { | > struct Point p = {{a, b}}; | Je suppose que toute la difficulté est la conséquence de cette ligne...
Pas vraiment.
| | > return p; | > } | > | > int main() | > { | > print_value(set_value(make_point(3, 4), 8)); // #1 | > int *p = make_point(467, 39).coord; // #2 | > } | > | Je ne connais pas le C, mais je vais essayer de répondre en devinant... | | > Que fait #1 ? | | Je dirais une erreur de compilation : set_value n'a pas de valeur de retour.
OK. Mais que #1 avec la correction ?
| | > Est-ce que #2 est bien formé ? | | J'aurais intuitivement dit oui, mais je suppose que la vérité est ailleur.
donc, "p" pointe sur un objet ? C'est ça ? Si oui, quelle sa durée de stockage ?
-- Gaby
Loïc Joly
Gabriel Dos Reis wrote:
OK. Mais que #1 avec la correction ?
Bin, du coup, je dirais que la ligne affiche 8, mais je suppose qu'il doit y avoir un truc.
| | > Est-ce que #2 est bien formé ? | | J'aurais intuitivement dit oui, mais je suppose que la vérité est ailleur.
donc, "p" pointe sur un objet ? C'est ça ? Si oui, quelle sa durée de stockage ?
Un objet temporaire qui existe jusqu'à la fin de l'exécution de l'instruction ?
-- Loïc, qui veut comprendre le problème
Gabriel Dos Reis wrote:
OK. Mais que #1 avec la correction ?
Bin, du coup, je dirais que la ligne affiche 8, mais je suppose qu'il
doit y avoir un truc.
|
| > Est-ce que #2 est bien formé ?
|
| J'aurais intuitivement dit oui, mais je suppose que la vérité est ailleur.
donc, "p" pointe sur un objet ? C'est ça ? Si oui, quelle sa durée de
stockage ?
Un objet temporaire qui existe jusqu'à la fin de l'exécution de
l'instruction ?
struct Point make_point(int a, int b) { struct Point p = {{a, b}}; return p; }
int main() { print_value(set_value(make_point(3, 4), 8)); // #1
Pas du C. (types incompatibles)
int *p = make_point(467, 39).coord; // #2 }
--
-ed- [remove YOURBRA before answering me] The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html <blank line> FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/
Gabriel Dos Reis
Loïc Joly writes:
| Gabriel Dos Reis wrote: | | | > OK. Mais que #1 avec la correction ? | | Bin, du coup, je dirais que la ligne affiche 8, mais je suppose qu'il | doit y avoir un truc.
Oui. En C++, il afficherait 8 comme on s'y attendrait. En C99, cela peut reformater le disque dur. En C90, c'est une erreur. .
| > | | > | > Est-ce que #2 est bien formé ? | > | | > | J'aurais intuitivement dit oui, mais je suppose que la vérité est ailleur. | > | > donc, "p" pointe sur un objet ? C'est ça ? Si oui, quelle sa durée de | > stockage ? | | Un objet temporaire qui existe jusqu'à la fin de l'exécution de | l'instruction ?
Ce n'est pas une durée de stockage, ça.
-- Gaby
Loïc Joly <loic.actarus.joly@wanadoo.fr> writes:
| Gabriel Dos Reis wrote:
|
|
| > OK. Mais que #1 avec la correction ?
|
| Bin, du coup, je dirais que la ligne affiche 8, mais je suppose qu'il
| doit y avoir un truc.
Oui. En C++, il afficherait 8 comme on s'y attendrait. En C99, cela peut
reformater le disque dur. En C90, c'est une erreur. .
| > |
| > | > Est-ce que #2 est bien formé ?
| > |
| > | J'aurais intuitivement dit oui, mais je suppose que la vérité est ailleur.
| >
| > donc, "p" pointe sur un objet ? C'est ça ? Si oui, quelle sa durée de
| > stockage ?
|
| Un objet temporaire qui existe jusqu'à la fin de l'exécution de
| l'instruction ?
| Gabriel Dos Reis wrote: | | | > OK. Mais que #1 avec la correction ? | | Bin, du coup, je dirais que la ligne affiche 8, mais je suppose qu'il | doit y avoir un truc.
Oui. En C++, il afficherait 8 comme on s'y attendrait. En C99, cela peut reformater le disque dur. En C90, c'est une erreur. .
| > | | > | > Est-ce que #2 est bien formé ? | > | | > | J'aurais intuitivement dit oui, mais je suppose que la vérité est ailleur. | > | > donc, "p" pointe sur un objet ? C'est ça ? Si oui, quelle sa durée de | > stockage ? | | Un objet temporaire qui existe jusqu'à la fin de l'exécution de | l'instruction ?