Besoin d'aide - Programmation
Marsh Posté le 26-12-2001 à 17:46:45
c bien un devoir que tu as a rendre?
ta deja fais qq chose?
Marsh Posté le 26-12-2001 à 17:55:19
//biblioteques n?cessaire a l'execution du programme
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
#include <conio.h>
#include <alloc.h>
//tableaux
#define max 100
typedef int tableau[max];
//************************************************
***********************
//********************* Fonctions utilis?es *****************************
//************************************************
***********************
int erreur(char *msg) //fonction erreur au cas ou l'execution se passe mal
{
printf("ERREUR!!! : %s\n",msg); //affichage du message d'erreur
getchar();//on attend une saisit au clavier pour sortir
exit(1); //on termine l'execution du programme
return 0;
}
//***********************************************************************
int balises() //fonction de creation des balises
{
char *dtete; //pointeur pour les balises HTML
char *titre;
char *dbody;
char *br;
FILE *html;
html = fopen("Devoir.htm","w+" );
strcpy(dtete,"<html>" ); //balises HTML
strcpy(titre,"<head><title> Devoir GTR1 Cree par Nexo </title></head>" );
strcpy(dbody,"<body>" );
strcpy(br,"<BR>" ); //saut de paragraphe
fwrite(dtete,6,1,html); //structure du fichier .HTML
fwrite(titre,strlen(titre),1,html);
fwrite(dbody,6,1,html);
fclose(html);
free(dbody); //liberation de la memoire
free(dtete);
free(titre);
free(br);
return 0;
}
//***********************************************************************
int finbal() //fonction de fin du fichier
{
char *fbody;
char *ftete;
FILE *fhtml;
fhtml = fopen("Devoir.htm","a+" );
strcpy(fbody,"<\body>" );
strcpy(ftete,"<\html>" );
fwrite(fbody,7,1,fhtml);
fwrite(ftete,7,1,fhtml);
fclose(fhtml);
free(ftete); //liberation de la memoire
free(fbody);
return 0;
}
//***********************************************************************
int car() //on copie le cartouche dans le fichier html
{
char cart[100]; //tableau de longeur 100
char *texte[max];
int i=0; //servira pour la boucle
FILE *fichier; //pointeur sur une structure de type fichier
fichier = fopen("Matrices.c","r" );//ouverture du fichier en lecture seule
FILE *html;
html = fopen("Devoir.htm","w+" );
if(!fichier)//erreur si le fichier n'est pas l?
{
erreur("Le fichier Matrices.c manque" );
}
{
fseek(fichier,0, SEEK_SET);
fgets(cart,'\n',fichier);
fprintf(html,"%s",cart);
fclose(fichier);
fclose(html);
}
free(cart);
return 0;
}
//************************************************
***********************
//********************* Procedure Principale ***************************
//************************************************
***********************
void main() //procedure principale
{
clrscr();//on efface l'ecran sous DOS
//balises(); //appelle dela fonction balises
car();
// finbal();
}
//************************************************
***********************
J'ai essaye de faire copie la premiere ligne de l'entet dans le fichier html mais ca marche pas
Marsh Posté le 26-12-2001 à 20:01:09
bon alors j'ai juste regardé ta fonction car et y a qq truc qui vont pas, en dehors du fait que tu cole des comentaire C++ dans un proframme C mais bon , j'ai mis en comentaire les modifications que j'ai faite
int car() /*on copie le cartouche dans le fichier html */
{
char cart[100]; /*tableau de longeur 100 */
char *texte[max];
FILE *fichier,*html; /* En C on peut pas déclarer les variables en plein milieu d'un bloc*/
int i=0; /*servira pour la boucle
fichier = fopen("Matrices.c","r" );//ouverture du fichier en lecture seule
if(!fichier)/*erreur si le fichier n'est pas l? */
{
erreur("Le fichier Matrices.c manque" );
}
else
{
html = fopen("Devoir.htm","w+" );
/*fseek(fichier,0, SEEK_SET); inutile*/
fgets(cart,100,fichier); /*C la taille de cart qu'il faut mettre ici*/
fprintf(html,"%s",cart);
fclose(fichier);
fclose(html);
}
/* free(cart); SURTOUT PAS DE FREE C'EST UNE VARIABLE STATIQUE*/
return 0;
}
Marsh Posté le 26-12-2001 à 21:02:48
merci ca m'aide beacoup,la copie est bonne là
reste plus qu'a faire une boucle
Marsh Posté le 26-12-2001 à 23:42:27
J'ai jeté un autre coup d'oeuil au reste, heu vous avez eu des cours de programmation avant qu'on vous donne ce devoir?
quand tu déclare un char * et que tu veux l'utiliser comme zone de stockage, faut pas oublier d'allouer la mémoirequi va avec:
char *buffer=(char*)malloc(sizeof(char)*30));/*voici un tableau de 30 charactères dont l'espace mémoire a été alloué dynamiquement, c la meme chose que char buffer[30], sauf que tu peux metre une variable dnas le premier cas, du style: char *buffer=(char*)malloc(sizeof(char)*i));*/
Marsh Posté le 27-12-2001 à 01:19:07
nop jamais de cours ,on a que des tp de merde ou on doit se de*** tout seul
En cours c que de l'algo jamais de C
Donc j'essais de me debrouiller comme je peux
Marsh Posté le 27-12-2001 à 12:55:20
Un conseil: achéte toi un bon bouquin, ça te servira toujours
Marsh Posté le 27-12-2001 à 12:58:32
Un conseil: change de prof ou d'ecole
Marsh Posté le 27-12-2001 à 13:10:32
deathsharp a écrit a écrit : Un conseil: change de prof ou d'ecole |
aussi
Marsh Posté le 27-12-2001 à 13:59:06
Nexo a écrit a écrit : nop jamais de cours ,on a que des tp de merde ou on doit se de*** tout seul |
Citation : Le premier but est d'appliquer en langage C les notions déjà abordées, |
hum vous avez l'air de vous contredire..
t'as ete aux cours au moins ?
LEGREG
[edtdd]--Message édité par legreg--[/edtdd]
Marsh Posté le 27-12-2001 à 14:24:43
Mouah j'vais en cours mais comme j'ai dit on fait que de l'algo pas de C en cours!!! Le c c seulement en tp
Bon une derniere question ,j'arrive pas a cree une boucle qui a partir de '/*' jusqu'a '/*' copie le contenu dans une chaine toto
Ex ; /* Premiers essais de calculs sur matrices
fichier créé le 6/11/2001
pour les TP de langage C
Département GTR, IUT de Blois
*/
Je veux commencer la saisit quand apres le /* et que la sasit ce termine apres le */
Pour le moment j'ai fait une boucle qui compte jusqu'a 4 et commencer apres le /* mais j'ai vu que ca conrepond pas au sujet
Il faut faire une boucle qui des que lit /* commence la saisit et se termine a */ et copie le contenu dans toto qui sera ensuite copie dans le fichier html
thx
Marsh Posté le 28-12-2001 à 20:25:37
bon on va faire simple pour commencer:
FILE *source;
int c,fin,temp,i;
char buffer[1024];
if(source=fopen("nomFichier","r" ))
{
c=fgetc(source);
while(c != EOF)
{
if(c == '/' && fgetc(source) == '*'
{
c=fgetc(source);
fin=0;
temp=0;
i=0;
while(c != EOF && !fin)
{
if(temp == '*' && c == '/'
{
fin=1;
}
else
{
if(temp)
{
bufer[i++]=temp;
temp=0;
}
if(c == '*'
{
temp=c;
}
else
{
buffer[i++]=c;
}
}
c=fgetc(source);
}
buffer[i]='\0';
}
c=fgetc(source);
}
}
[edtdd]--Message édité par letoII--[/edtdd]
Marsh Posté le 28-12-2001 à 20:30:21
Merci ,j'ai fait autrement moi pour faire la selection
int fonctiontri()
{
char cart[100]; //tableau de longeur 100
char *texte[max];
char *te[max];
char test[2]; //servira pour lire deux carcateres en meme temps
char toto[]={"/*"};//tableau contenant '/*'
char titi[]={"*/"};//tableau contenant '*/'
int i=0; //servira pour le comptage dans la boucle
int ptr; //resultat de la comparaison test toto
int ptr2;//resultat de la comparaison test titi
FILE *fichier; //pointeur sur une structure de type fichier
fichier = fopen("Matrices.c","r" );//ouverture du fichier en lecture seule
FILE *html;
if(!fichier)//erreur si le fichier n'est pas l?
{
erreur("Le fichier Matrices.c manque" );
}
else
{
html=fopen("teste.htm","w+" ); //on ajoute a la fin du fichier
fgets(test,3,fichier);
ptr=strcmpi(test,toto); //on compare deux chaine
if (ptr==0); //si elles sont identiques on fait la boucle
{
fgets(cart,100,fichier);
fprintf(html,"<H2> %s </H2>",cart);
for(i=0;i<5000;i++) //boucle s'arretant quand on a /*
{
te[i]=fgets(test,3,fichier);
ptr2=strcmpi(test,titi);
if(ptr2==0)
{break;}
else
{
texte[i]=fgets(cart,100,fichier);
fprintf(html,"%s<br> ",texte[i]);
}
}
}
}
fclose(fichier);
fclose(html);
return 0;
}
Marsh Posté le 28-12-2001 à 20:42:19
c pas que je veux être médisant, mais bon.... prend ma solution
ps: t sur que t'est allé au cours d'algo?
Marsh Posté le 28-12-2001 à 21:11:36
ben j'ai compile ton truc ca me met des erreurs
if(source=fopen("fichier","r" )) =>Possible incorect insignement
voila
Ps: si malheuresemnt jv'ais vraiment en cours mais amphi c pas le top
Marsh Posté le 28-12-2001 à 21:19:10
Pourtant ma belle fonction je l'avais fait avec amour ,j'arrive a copie l'en tete coorectemnt avec mon truc mais bon me reste du boulot
/************************************************************************
Devoir GTR 1 :"Generation d'un document en HTML"
Auteurs:
Date: Mars 2002
************************************************************************/
//biblioteques n?cessaire a l'execution du programme
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
#include <conio.h>
#include <alloc.h>
//tableaux
#define max 100
typedef int tableau[max];
//************************************************
***********************
//********************* Fonctions utilis?es *****************************
//************************************************
***********************
int erreur(char *msg) //fonction erreur au cas ou l'execution se passe mal
{
printf("ERREUR!!! : %s\n",msg); //affichage du message d'erreur
getchar();//on attend une saisit au clavier pour sortir
exit(1); //on termine l'execution du programme
return 0;
}
//***********************************************************************
int ecriturebalisesdebut() //fonction de creation des balises
{
char *dtete; //pointeur pour les balises HTML
char *titre;
char *dbody;
char *br;
FILE *html;
html = fopen("cartouc.htm","w+" );
FILE *debut;
debut= fopen("debut.htm","w+" );
strcpy(dtete,"<html>" ); //balises HTML
strcpy(titre,"<head><title> Devoir GTR1 Cree par N</title></head>" );
strcpy(dbody,"<body>" );
strcpy(br,"<BR>" ); //saut de paragraphe
fwrite(dtete,6,1,html); //structure du fichier .HTML
fwrite(titre,strlen(titre),1,html);
fwrite(dbody,6,1,html);
fwrite(dtete,6,1,debut); //structure du fichier .HTML
fwrite(titre,strlen(titre),1,debut);
fwrite(dbody,6,1,debut);
fclose(html);
fclose(debut);
return 0;
}
//***********************************************************************
int ecriturebalisefin() //fonction de fin du fichier
{
char *fbody;
char *ftete;
FILE *html;
html = fopen("cartouc.htm","a" );
strcpy(fbody," <\body>" );
strcpy(ftete," <\html>" );
fwrite(fbody,7,1,html);
fwrite(ftete,7,1,html);
fclose(html);
return 0;
}
//***********************************************************************
int ecriturecartouche() //on copie le cartouche dans le fichier html
{
char cart[100]; //tableau de longeur 100
char *texte[max];
char *te[max];
char test[2]; //servira pour lire deux carcateres en meme temps
char toto[]={"/*"};//tableau contenant '/*'
char titi[]={"*/"};//tableau contenant '*/'
int i=0; //servira pour le comptage dans la boucle
int ptr; //resultat de la comparaison test toto
int ptr2;//resultat de la comparaison test titi
FILE *fichier; //pointeur sur une structure de type fichier
fichier = fopen("Matrices.c","r" );//ouverture du fichier en lecture seule
FILE *html;
if(!fichier)//erreur si le fichier n'est pas l?
{
erreur("Le fichier Matrices.c manque" );
}
else
{
html=fopen("cartouc.htm","a+" ); //on ajoute a la fin du fichier
fgets(test,3,fichier);
ptr=strcmpi(test,toto); //on compare deux chaine
if (ptr==0); //si elles sont identiques on fait la boucle
{
fgets(cart,100,fichier);
fprintf(html,"<H2> %s </H2>",cart);
for(i=0;i<5000;i++) //boucle s'arretant quand on a /*
{
fgets(test,3,fichier);
ptr2=strcmpi(test,titi);
if(ptr2==0)
{break;}
else
{
texte[i]=fgets(cart,100,fichier);
fprintf(html,"%s<br> ",texte[i]);
}
}
}
}
fclose(fichier);
fclose(html);
return 0;
}
//***********************************************************************
int fonctiontri()
{
char cart[100]; //tableau de longeur 100
char *texte[max];
char *te[max];
char test[2]; //servira pour lire deux carcateres en meme temps
char toto[]={"/*"};//tableau contenant '/*'
char titi[]={"*/"};//tableau contenant '*/'
int i=0; //servira pour le comptage dans la boucle
int ptr; //resultat de la comparaison test toto
int ptr2;//resultat de la comparaison test titi
FILE *fichier; //pointeur sur une structure de type fichier
fichier = fopen("Matrices.c","r" );//ouverture du fichier en lecture seule
FILE *html;
if(!fichier)//erreur si le fichier n'est pas l?
{
erreur("Le fichier Matrices.c manque" );
}
else
{
html=fopen("teste.htm","w+" ); //on ajoute a la fin du fichier
fgets(test,3,fichier);
ptr=strcmpi(test,toto); //on compare deux chaine
if (ptr==0); //si elles sont identiques on fait la boucle
{
fgets(cart,100,fichier);
fprintf(html,"<H2> %s </H2>",cart);
for(i=0;i<5000;i++) //boucle s'arretant quand on a /*
{
te[i]=fgets(test,3,fichier);
ptr2=strcmpi(test,titi);
if(ptr2==0)
{break;}
else
{
texte[i]=fgets(cart,100,fichier);
fprintf(html,"%s<br> ",texte[i]);
}
}
}
}
fclose(fichier);
fclose(html);
return 0;
}
//************************************************
***********************
//********************* Procedure Principale ***************************
//************************************************
***********************
void main() //procedure principale
{
FILE *debut; //pointeur vers le fichier debut
char *bal; //servira pour faire un lien vers devoir.htm
clrscr();//on efface l'ecran sous DOS
ecriturebalisesdebut(); //on appelle les fonctions
ecriturecartouche();
ecriturebalisefin();
fonctiontri();
debut=fopen("debut.htm","a+" ); //fichier contenant tout les fichier html
strcpy(bal,"Pour lire le cartouche cliquez ""<a href=""cartouc.htm>""la""</A>" );
fwrite(bal,strlen(bal),1,debut);
fclose(debut);
}
//***********************************************************************
OK c bordelique ,je devrais plutot faire une fonction tri que j'appelle a chaque fois mais c a rentre pour Mars ,j'essait de faire un bon truc
Les astuces sont tjs les bien venus
Marsh Posté le 29-12-2001 à 23:18:42
Nexo a écrit a écrit : ben j'ai compile ton truc ca me met des erreurs if(source=fopen("fichier","r" )) =>Possible incorect insignement voila Ps: si malheuresemnt jv'ais vraiment en cours mais amphi c pas le top |
c normal, mais c juste un warning tu peux l'ignorer, tu compile avec quoi au fait?
Marsh Posté le 29-12-2001 à 23:31:20
je compile avec turbo C++ 3.0,on utilise ca en tp
Desole d'etre pas un genie de C
Marsh Posté le 30-12-2001 à 19:56:13
Faut bien apprendre un jour ou l'autre, personne a la science infuse
Marsh Posté le 31-12-2001 à 16:11:40
hum z'avez pas des bon livre a me conseiller pour le C ??
thx
Marsh Posté le 01-01-2002 à 00:36:52
Essaye Le Langage C par Kernighan & Ritchie
pour les bases c super
Marsh Posté le 01-01-2002 à 03:57:40
:bounce: :jap: :sleep: :sweat: :gun: :hello: :eek2: uch: t1cable: :na: :sarcastic: :crazy: :wahoo: :lol: :fou: :non: :ange: :fuck: :love:
:benetton: :cry: :hap: :sol: :bounce: :jap: :sleep: :sweat: :gun: :hello: :eek2: uch: t1cable: :na: :sarcastic: :crazy: :wahoo: :lol: :fou: :non: :ange: :fuck: :love:
:benetton: :cry: :hap: :sol: :bounce: :jap: :sleep: :sweat: :gun: :hello: :eek2: uch: t1cable: :na: :sarcastic: :crazy: :wahoo: :lol: :fou: :non: :ange: :fuck: :love:
:benetton: :cry: :hap: :sol: :bounce: :jap: :sleep: :sweat: :gun: :hello: :eek2: uch: t1cable: :na: :sarcastic: :crazy: :wahoo: :lol: :fou: :non: :ange: :fuck: :love:
c l an 2000! bonne année!
[edtdd]--Message édité par veryfree--[/edtdd]
Marsh Posté le 26-12-2001 à 17:37:56
http://multimania.com/nexo1111/devoirIndex.html
j'arrive a rien ca marche pas ,ca copie n'importe quoi ;(