Problemes avec un projet(langage C)
Fermé
walid
-
3 mai 2004 à 23:39
walid524 Messages postés 20 Date d'inscription lundi 3 mai 2004 Statut Membre Dernière intervention 12 avril 2007 - 7 juin 2004 à 23:02
walid524 Messages postés 20 Date d'inscription lundi 3 mai 2004 Statut Membre Dernière intervention 12 avril 2007 - 7 juin 2004 à 23:02
A voir également:
- Problemes avec un projet(langage C)
- Langage ascii - Guide
- Langage binaire - Guide
- Pascal langage - Télécharger - Édition & Programmation
- Que veut dire le rectangle en langage sms - Forum Nokia
- Filigrane projet - Guide
5 réponses
blurk
Messages postés
486
Date d'inscription
vendredi 16 avril 2004
Statut
Membre
Dernière intervention
15 mars 2009
160
4 mai 2004 à 11:21
4 mai 2004 à 11:21
pas mal comme cahier des charges.
c'est qui le chef de projet ?
c'est pour une équipe de combien?
c'est bien payé ? ;-)
c'est qui le chef de projet ?
c'est pour une équipe de combien?
c'est bien payé ? ;-)
Le probleme, c'est l'ensemble du projet ???
> j ai un gros probleme avec ce projet et je doit le rendre dans 2 semaines
> j ai un gros probleme avec ce projet et je doit le rendre dans 2 semaines
Salut Walid,
t'as toujours besoin d'aide sur ce projet ?
chatbotté
t'as toujours besoin d'aide sur ce projet ?
chatbotté
walid524
Messages postés
20
Date d'inscription
lundi 3 mai 2004
Statut
Membre
Dernière intervention
12 avril 2007
7 juin 2004 à 23:02
7 juin 2004 à 23:02
slt chatbotte ,j ai toujours besoin d aide et a vrai dire je ne sais pas si je pourrai le faire parceque j ai d autres exams a passer,si tu peux me donner un coup de main ca sera tres gentil.a bientot...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
sympa2004
Messages postés
1
Date d'inscription
jeudi 3 juin 2004
Statut
Membre
Dernière intervention
3 juin 2004
3 juin 2004 à 15:34
3 juin 2004 à 15:34
j'ais besoin de la reponse du walid svp c'est à dire la reponse au projet svp.
5 mai 2004 à 00:50
//---------------------------------------------------------------
// Conversion texte vers HTML
//---------------------------------------------------------------
// Projet ...
//
// PremiŠre version le 30-04-2004
//---------------------------------------------------------------
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
# include <string.h>
# include <dos.h>
#include "\PROGRA~1\TC\PROJET~1\TXTBOX.C"
#define FILEPATH "C:\\PROGRA~1\\TC\\PROJET~1\\"
#define NB_SCREEN_LINES 49 // Taille de l'‚cran DOS sous windows !
#define MAX_LINES 200 // Nb max de lignes dans le fichier
#define MAX_COLS 74 // Nb mac de colonnes ‚ditables
#define LINE_INCREMENT 20 // Incr‚ment page pr‚c‚dente/suivante
char KeyPressed;
char memfile[MAX_LINES*MAX_COLS+1];
int filesize;
/*-------------------------------------------------------------
Affichage de la page d'aide
-------------------------------------------------------------*/
void display_help(void)
{
char key;
clrscr();
printf("\n\n\t? : Affiche cette page\n");
printf("\tD nnn : Efface la ligne 'nnn'\n");
printf("\tI nnn : InsŠre une ligne avant la ligne 'nnn'\n");
printf("\tE nnn : Edite la ligne 'nnn'\n");
printf("\tP: Page pr‚c‚dente\n");
printf("\tN: Page suivante\n");
printf("\tW: Sauvegarde le fichier\n");
printf("\tQ: Quitte avec ou sans sauvegarder\n");
printf("\n\tTapez une touche pour revenir … l'‚diteur");
key = getch();
}
/*-------------------------------------------------------------
Chargement du fichier en m‚moire
-------------------------------------------------------------*/
int load_file(FILE *file)
{
char buffer[80];
int nblines;
nblines = 0;
while ((fgets(buffer, MAX_COLS+1, file) != NULL) &&
(++nblines <= MAX_LINES))
strcpy(memfile+(nblines-1)*(MAX_COLS+1),buffer);
filesize = nblines; //nombre de lignes dans le fichier
if (nblines >= MAX_LINES)
return(0); // D‚bordement de buffer
else
return(1); // Lecture OK
}
/*-------------------------------------------------------------
Sauvegarde du fichier sur disque
-------------------------------------------------------------*/
int savefile(FILE *file)
{
char buffer[80];
int nblines;
printf("sauvegarde en cours");
delay(2000);
/*
nblines = 0;
while ((fgets(buffer, MAX_COLS+1, file) != NULL) &&
(++nblines <= MAX_LINES))
strcpy(memfile+(nblines-1)*(MAX_COLS+1),buffer);
filesize = nblines; //nombre de lignes dans le fichier
if (nblines >= MAX_LINES)
return(0); // D‚bordement de buffer
else
return(1); // Lecture OK
*/
}
/*-------------------------------------------------------------
Affichage d'une page de l'‚diteur
-------------------------------------------------------------*/
void display_memfile(char *filename , int firstline)
{
int nblines;
clrscr();
printf(" Edition de %s \n\n",filename);
nblines = 0;
// Affiche NB_SCREEN_LINES-5 lignes sur l'‚cran
while ( (*(memfile+(firstline+nblines)*(MAX_COLS+1))!='\0') &&
(nblines < NB_SCREEN_LINES-5)){
printf("%3d: %s",firstline+nblines+1,memfile+(firstline+nblines)*(MAX_COLS+1));
nblines++;
}
// Si pas assez, complŠte avec des lignes vides
if (nblines < NB_SCREEN_LINES-5)
while (nblines++<NB_SCREEN_LINES-5)
printf("\n");
}
/*-------------------------------------------------------------
Suppression d'une ligne dans l'‚diteur
-------------------------------------------------------------*/
void deleteline(int numlinetodelete)
{
int i,j;
numlinetodelete--; // car tableau d‚marre a 0 et la premiere ligne edit‚e est num‚rot‚e 1
if ( numlinetodelete < filesize ) {
// D‚cale toutes les lignes de -1 … partir de la ligne … effacer (‚crase)
for (i = numlinetodelete ; i <= filesize ; i++)
for (j = 0 ; j <= MAX_COLS+1 ; j++)
*(memfile+i*(MAX_COLS+1)+j) = *(memfile+(i+1)*(MAX_COLS+1)+j);
filesize--;
}
}
/*-------------------------------------------------------------
Ajout d'une ligne dans l'‚diteur (… la fin)
-------------------------------------------------------------*/
void appendline(void)
{
int i,j;
char linebuffer[MAX_COLS+2];
linebuffer[0] = '\0';
gotoxy(1,NB_SCREEN_LINES-2);
printf("%3d: ",filesize+1);
txtbox(MAX_COLS,linebuffer);
strcat(linebuffer,"\n");
strcpy(memfile+filesize*(MAX_COLS+1),linebuffer);
filesize++; // Taille du fichier
}
/*-------------------------------------------------------------
Insertion d'une ligne dans l'‚diteur (avant la ligne d‚sign‚e)
-------------------------------------------------------------*/
void insertline(int numlinetoinsert)
{
int i,j;
char linebuffer[MAX_COLS+2];
// Saisie de la nouvelle ligne
numlinetoinsert--;
linebuffer[0] = '\0';
gotoxy(1,NB_SCREEN_LINES-2);
printf("%3d: ",numlinetoinsert+1);
txtbox(MAX_COLS,linebuffer);
strcat(linebuffer,"\n");
// D‚cale les lignes suivantes
for (i = filesize-1 ; i >= numlinetoinsert ; i--)
for (j = 0 ; j < MAX_COLS+1 ; j++)
*(memfile+(i+1)*(MAX_COLS+1)+j) = *(memfile+i*(MAX_COLS+1)+j);
// Ajoute la ligne saisie
strcpy(memfile+numlinetoinsert*(MAX_COLS+1),linebuffer);
filesize++;
}
/*-------------------------------------------------------------
Edition d'une ligne
-------------------------------------------------------------*/
void editline(int numlinetoedit)
{
int i,j;
char linebuffer[MAX_COLS+2];
// Initialise
numlinetoedit--;
strcpy(linebuffer,memfile+numlinetoedit*(MAX_COLS+1));
i=strlen(linebuffer);
linebuffer[i-1]='\0'; // Supprime le '\n' a la fin de la ligne
// Edition de la ligne
gotoxy(1,NB_SCREEN_LINES-2);
printf("%3d: ",numlinetoedit+1);
txtbox(MAX_COLS,linebuffer);
strcat(linebuffer,"\n");
// Remplacement par la nouvelle ligne
strcpy(memfile+numlinetoedit*(MAX_COLS+1),linebuffer);
}
/*-------------------------------------------------------------
Parsing d'une ligne de commande dans l'‚diteur
-------------------------------------------------------------*/
int parseline(char *cmdline, char *cmd, int *param1)
{
int offset1=0;
int offset2=0;
int i;
char param[50], ch, cmdtoken;
// supprime les espaces de d‚but
while (*(cmdline+offset1)==' ')
offset1++;
cmdtoken = toupper(*(cmdline+offset1));
if (cmdtoken == 'P' || // Commande valide sans paramŠtre
cmdtoken == 'N' ||
cmdtoken == 'A' ||
cmdtoken == 'Q' ||
cmdtoken == '?' ) {
*cmd = cmdtoken;
*param1 = 0;
return(1); // Renvoie OK
}
if (cmdtoken == 'I' || // Commande valide avec paramŠtre
cmdtoken == 'D' ||
cmdtoken == 'E' ) {
*cmd = cmdtoken;
while (!isdigit(*(cmdline+offset1))) // Cherche le d‚but du paramŠtre
offset1++;
offset2 = offset1;
while (isdigit(*(cmdline+offset2))) // Cherche la fin du paramŠtre
offset2++;
for(i=offset1 ; i <= offset2 ; i++) // Extrait le paramŠtre
param[i-offset1] = *(cmdline+i);
param[i] = '\0';
*param1 = atoi(param); // ParamŠtre entier (toujours un nø de ligne)
if (*param1)
return(1);
}
// Si erreur d'interpr‚tation de la commande
*cmd = '\0';
*param1 = 0;
gotoxy(1,NB_SCREEN_LINES-2);
printf(" Erreur de syntaxe (? pour de l'aide) <Pressez une touche> ");
ch=getch();
gotoxy(1,NB_SCREEN_LINES-2);
printf(" ");
return(0);
}
/*-------------------------------------------------------------
Cr‚ation du fichier de donn‚es (.dat)
-------------------------------------------------------------*/
void makedatafile(void)
{
char line[80],filename[80],buffer[255],keypressed;
char commande;
int parametre;
int numline, nblines, firstline, i, startline;
FILE *datafile;
for(i=0;i<=MAX_LINES;i++)
*(memfile+i*(MAX_COLS+1))='\0'; // Init
printf ( "\nEdition d'un fichier de donn‚es\n\n" );
printf ( "Nom du fichier : " );
line[0] = '\0';
strcpy(line,"toto.dat");
txtbox ( 60, line );
strcpy(filename, FILEPATH);
strcat(filename,line);
if ((datafile = fopen(filename, "rt")) == NULL) {
printf("\n\nCr‚ation du fichier %s \n",line);
datafile = fopen(filename, "wt");
}
else
load_file(datafile);
startline = 0;
while (1) {
/* Affichage du contenu du fichier */
display_memfile(filename,startline);
/* Attente commande */
gotoxy(1,NB_SCREEN_LINES-3);
printf(" cmd: ");
line[0]='\0';
txtbox(10,line);
parseline(line,&commande,¶metre);
if (commande == 'D') { // Efface une ligne (Delete)
deleteline(parametre);
}
if (commande == 'I') { // Insere une ligne (Insert)
insertline(parametre);
}
if (commande == 'E') { // Edite une ligne (Edit)
editline(parametre);
}
if (commande == 'A') { // Ajoute une ligne … la fin (Append)
appendline();
}
if (commande == 'P') { // Page pr‚c‚dente
startline=startline-LINE_INCREMENT;
if (startline < 0) startline = 0;
}
if (commande == 'S') { // Page suivante
startline=startline+LINE_INCREMENT;
if (startline>=filesize) startline = filesize-LINE_INCREMENT;
if (startline < 0) startline = 0;
}
if (commande == '?') // Affiche la page d'aide
display_help();
if (commande == 'Q') { // Quitte
gotoxy(1,NB_SCREEN_LINES-2);
printf(" Voulez vous sauvegarder le fichier ? (O/N)");
while (1) {
keypressed = getch();
if (toupper(keypressed) == 'O') {
savefile(datafile);
break;
}
if (toupper(keypressed) == 'N')
break;
}
break;
}
}
/* Fermeture et retour au menu principal */
fclose(datafile);
// keypressed = getch();
fflush ( stdin );
/*restore_ui();*/
}
//-------------------------------------------------------------------
// Programme principal
//-------------------------------------------------------------------
main()
{
while (1) {
clrscr();
printf("\n\n********** Menu principal **********\n");
printf("[1] Cr‚er un fichier de donn‚es\n");
printf("[2] Cr‚er un fichier de format\n");
printf("[3] Cr‚er un fichier de s‚lection\n");
printf("\n[0] Quitter\n");
do
KeyPressed = getch();
while ((KeyPressed < '0') || (KeyPressed > '3'));
switch (KeyPressed) {
case '1' : makedatafile();
break;
case '2' : break;
case '3' : break;
case '0' :
printf("\n\nVoulez vous vraiment quitter ? (O/N) ");
KeyPressed = getch();
if (KeyPressed == 'O' || KeyPressed == 'o') {
printf("Fin de l'application\n");
exit(1);
}
}
}
}
et voici la bibliotheque TXTBOX que j ai trouve sur le net
/****************************************************************************
* *
* TXTBOX.C - This textbox works like the normal textbox found in Windows. *
* You can use this textbox function in your applications or *
* projects without any modifications at all. The keys *
* available are arrow keys, DEL, Insert, Backspace, Home, End. *
* A very useful and a must addon for u'r progs !! *
* *
* ------------------------------------------------------------------------ *
* Author : Mithun John Jacob *
* Kerala.INDIA *
* email : mithunjohn@jacobsmail.com *
* WWW : http://www.mithunjj.cjb.net *
* ------------------------------------------------------------------------ *
// ---------------------------------- SoC -----------------------------------
/* ..ASCII and Scan Codes of Keys.. */
# define ESC 27
# define ENTER 13
# define RIGHT 77
# define LEFT 75
# define HOME 71
# define END 79
# define INSERT 82
# define DEL 83
/*-------------------------------------
..Checks the status of Insert Key..
..Returns..
..1 if ON..
..0 if OFF..
--------------------------------------*/
int ins_state ( void )
{
unsigned char far *stat =(char far*)0x417 ;
char status ;
status = *stat ;
if ( ( status & 128 ) == 128 )
return 1;
else
return 0;
}
/*----------------------------------
..Changes the shape of cursor..
------------------------------------*/
void cursor_shape ( int y , int x )
{
union REGS i, o ;
i.h.ah = 1 ;
i.h.ch = y ;
i.h.cl = x ;
int86 ( 16, &i, &o ) ;
}
/*-----------------------------------------------
..Restores the screen to the orginal state..
-------------------------------------------------*/
void restore_ui(void)
{
int i;
char far *vidmem=(char far*)0xB8000000;
window(1,1,80,25);
clrscr();
for (i=1;i<4000;i+=2)
*(vidmem+i)=7;
_setcursortype(_NORMALCURSOR);
}
/*-------------------------------------------
..Function for drawing horizontal line..
---------------------------------------------*/
void horiz_draw(int start_x,int end_x,int y,char symbol)
{
int i,len;
len=end_x-start_x;
for (i=1;i<=len+1;++i,++start_x)
{
gotoxy(start_x,y);
cprintf("%c",symbol);
}
}
/*
-----------------------------------
..The important fuction..
..Just include in your programs..
-----------------------------------
+------------------------- Available Keys -----------------------------------+
| ~ Right Arrow --> For moving the cursor to the right |
| ~ Left Arrow --> For moving the cursor to the left |
| ~ DEL --> For deleting characters |
| ~ Backspace --> For deleting characters |
| ~ Insert --> For inserting charcters |
| ~ Home --> For going to the beginning of the text |
| ~ End --> For going to the end of the text |
| ~ ESC --> For clearing the textbox |
+----------------------------------------------------------------------------+
*/
void txtbox ( int length, char *str)
{
/* char *str
..Array into which characters are being stored,
*/
char key;
int startx, /* ..For storing the starting position.. */
x,
y,
i,
j,
currentpos,
lastpos = 0,
len; /* ..Length of the string.. */
startx = wherex();
y = wherey();
/*--------------------------------------------------------------------
..I have used the colors which I like, you are free to use your
own colors..
----------------------------------------------------------------------*/
textcolor ( WHITE );
textbackground ( BLUE );
/* ..Just for drawing the cute blue box.. */
horiz_draw ( startx , startx + length , y , ' ');
gotoxy ( startx , y );
// str[0] = '\0'; Pour permettre l'utilisation d'une chaine non video
len = strlen ( str );
for ( i = 0 ; i < len ; i++ )
putch ( str[i] );
while ( 1 ) {
if ( ins_state() == 1 ) /* ..If the Insert is ON change the cursor.. */
cursor_shape ( 4 , 8 );
else
_setcursortype( _NORMALCURSOR );
key = getch();
x = wherex();
len = strlen ( str );
if ( key == ENTER )
break;
if ( key == ESC ) { /* ..For clearing the characters in the textbox.. */
textbackground ( BLUE );
horiz_draw ( startx , startx + length , y , ' ');
gotoxy ( startx , y );
str[0] = '\0';
lastpos = 0;
continue;
}
/* ..For storing the typed characters into the array.. */
if ( key > 31 && key < 127 && x < ( startx + length ) ) {
if ( len == length && ins_state() == 1 ) {
printf ( "\a" );
continue;
}
if ( ins_state() == 1 ) { /* ..Insert.. */
currentpos = x - startx;
str[len + 1] = '\0';
for ( i = len ; i >= currentpos ; i-- )
str[i] = str[i - 1];
str[currentpos] = key;
len = strlen ( str );
gotoxy ( startx , y );
horiz_draw ( startx , startx + len , y , ' ');
gotoxy ( startx , y );
for ( i = 0 ; i < len ; i++ )
putch ( str[i] );
gotoxy ( ++x , y );
}
else {
i = x - startx;
putch ( key );
str[i] = key;
if ( i >= lastpos ) {
lastpos = i;
str[++i] = '\0';
}
}
}
if ( key == 8 && x <= startx + len && x != startx ) { /* ..Backspace.. */
x = wherex();
currentpos = x - startx;
for ( i = currentpos - 1 ; str[i] != '\0' ; i++ )
str[i] = str[i + 1];
gotoxy ( startx , y );
horiz_draw ( startx , startx + len , y , ' ');
gotoxy ( startx , y );
for ( i = 0 ; i < len ; i++ )
putch ( str[i] );
gotoxy ( --x , y );
continue;
}
if ( key == 0 ) { /* ..If the keys are Scan Keys.. */
key = getch();
if ( key == END ) {
gotoxy ( startx + len , y );
continue;
}
if ( key == HOME ) {
gotoxy ( startx , y );
continue;
}
if ( key == LEFT && x > startx ) {
gotoxy ( --x , y );
continue;
}
if ( key == RIGHT && x < startx + len ) {
gotoxy ( ++x , y );
continue;
}
x = wherex();
if ( key == DEL && x != startx + len ) {
x = wherex();
currentpos = x - startx;
for ( i = currentpos ; str[i] != '\0' ; i++ )
str[i] = str[i + 1];
gotoxy ( startx , y );
horiz_draw ( startx , startx + len , y , ' ');
gotoxy ( startx , y );
for ( i = 0 ; i < len ; i++ )
putch ( str[i] );
gotoxy ( x , y );
continue;
}
}
} /* ..End of while loop.. */
i = strlen ( str );
/* ..Truncates the useless spaces found at the end of string.. */
for ( j = i - 1 ; j >= 0 ; --j ) {
if ( str[j] != ' ' ) {
str[++j] = '\0';
break;
}
}
/* Restores text and background default colors */
textcolor ( WHITE );
textbackground ( BLACK );
}
// ---------------------------------- EOF -----------------------------------