cs_metek
Messages postés21Date d'inscriptionvendredi 10 octobre 2003StatutMembreDernière intervention23 mai 2006
-
24 mars 2004 à 01:09
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019
-
24 mars 2004 à 09:29
Bonjour!!
Voila j'ai une ptite question sur les API!!!
J'ai fait un petit programme qui liste un fichier texte cherche un mot entré et recupere le reste de la ligne dont voici le code:
#include <stdio.h>
#include <string.h>
char mot[100],file_t[10000],newtext[10000];
char k[0];
//Fonction principale
main()
{
FILE *file,*file1;
char s_read[10000];
int l_mot=0,l_file=0,t,z,n,decal=0;
system("cls");
puts("ADMIN help by METEK\n");
//Entrée du chemin du fichier
file_c();
//Ouverture en BINAIRE
file=fopen(file_t,"rb");
//Il s'agit ici de compter combien d'octets contient le fichier
//Un caractère étant codé sur 1 octet on aura donc le nombre de caractères du fichier
//Le pointeur est initialement au début du fichier
//Tant que l'on atteint pas la fin du fichier,
//On place dans n un bloc du fichier de la taille d'un entier et on incrémente l_file
//Le pointeur avance ainsi à chaque tour de la taille d'un entier (4 octets)
//Il faudra donc multiplier l_file par 4 pour avoir le nombre d'octets et non de groupes de 4 octets
while(!feof(file))
{
n=getw(file);
l_file++;
}
//On multiplie par 4 pour obtenir le nombre d'octets
l_file=l_file*4;
//On ferme
fclose(file);
//Ouverture en ASCII
file1=fopen("temp1.txt","w");
file=fopen(file_t,"r");
printf ("> Fichier trouv%c (%d caract%cres) : OK",130,l_file,138);
//Entrée du mot recherché
mot_recherche();
//Longueur du mot
l_mot=strlen(mot);
//Erreur si la longueur du mot est nulle
if ((!l_mot)||(l_mot>100))
{
puts("\n> Mot incorrect (longueur nulle ou > 100) : ERREUR");
puts("> Appuyez sur une touche pour continuer...");
getch();
main();
}
for (t=0;t<=(l_file-l_mot);t++)
{
//On place le pointeur à la position t (initialement nulle puis incrémentée)
fseek(file,t,0);
//On récupère l_mot caractères à partir de cette position
//(autant de caractères que de caractères dans le mot)
//Attention, le deuxième argument est 'l_mot+1' pour récupérer l_mot caractères !
fgets(s_read,l_mot+1,file);
//Si les chaînes mot et s_read sont identiques
if(!(strcmp(s_read,mot)))
{
char c;
while ( (c = getc(file)) != '\n' )
fputc (c,file1);
fprintf(file1,"\n");
}
}
fclose (file1);
fclose(file);
printf("tout a ete realise avec succes");
getch();
exit();
}
//Fonction d'entrée du mot recherché
int mot_recherche()
{
printf("\n\n> Mot recherch%c ? ",130);
gets(mot);
fflush(stdin);
return 0;
}
//Fonction d'entrée du chemin du fichier
int file_c()
{
printf("> Chemin d'acc%cs du fichier texte ? ",138);
gets(file_t);
fflush(stdin);
return 0;
}
Bon tout cela tourne impecable sous dos!!
Or maintenant j'aimerai y mettre avec une interface graphique et y integrer a un editeur de texte programmer avec les API!!
Comment puis je faire ???
Je dois refaire tout le code ???
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 24 mars 2004 à 01:18
Refaire tout le code: EXACT !!!
FILE *file, devient:
HANDLE hfl; // par exemple
fopen devient:
hfl = CreateFile(....);
ensuite hyper simple, WriteFile ou ReadFile.
API ne connait que des buffers d'octets, tu lui demandes la quantite il te la sort si dispo.
Sera a toi de detailler le buffer pour extraire les lignes, etc...
Regarde les sources publiees avec MSDN ouvert a cote.