geogeo
:
Comme je te l'ai dit je n'ai jamais fait un seul prog en C sur PC et donc c'est l'occasion de mis mettre
Bon courage
mais je n'y connais rien à l'extraction d'arguments MS-DOS
int main(int argc, void *argv[])
{
/*
argc = Nombre d'argument
argv = ptr vers les arguments
*/
while(argc--)
{
printf("Argument %d : %s\n", argc+1, argv[argc]);
}
return 0;
}
ouvrir un fichier et lire et écrire dedans.
Comme sur ti
fopen/fclose
et en général tte fonction C commencant par f
exemple :
int main(int argc, void *argv[])
{
/*
argv[0] = nom + chemin du programme lancé
argv[1] = premier argument
argv[2] = second argument
...
*/
FILE *fp_in, *fp_out; /* structure de type "pointeur de fichier" */
/*
se programme prend 2 argrument :
*/
if (argc != 3)
{
fprintf(stderr,"Nombre d'argument incorrect !\n"
"\tusage : foo fichier1 fichier2\n\n");
return -1; /* erreur */
}
/* ouverture du fichier 1 en mode lecture binaire "rb" : r pour read, b pour binary */
if ( ( fp_in = fopen(argv[1],"rb")) == NULL )
{
fprintf(stderr,"Impossible d'ouvrir le fichier %s !\n", argv[1]);
return -1; /* erreur */
}
/* ouverture du fichier 2 en mode ecriture binaire "wb" : w pour write, b pour binary */
if ( ( fp_out = fopen(argv[2],"wb")) == NULL )
{
fprintf(stderr,"Impossible d'ouvrir le fichier %s !\n", argv[2]);
fclose(fp_in); /* on ferme proprement le fichier ouvert ci-dessus */
return -1; /* erreur */
}
/* On fait se qu'on a a faire... */
fclose(fp_in);
fclose(fp_out);
return 0;
}
Les "type" d'ouvertures sont :
t pour texte le mode texte. A n'utiliser que pour l'ouverture de fichier texte !!
b pour binaire. A utiliser dans tout les autres cas !
et les modes :
r : lecture (read) si le fichier existe pas une erreur est généré
w : ecriture (write) si le fichier n'existe pas il est cree
a : Ajout (append) cree le fichier si il n'existe pas
r+ : Lecture "augmenté" (en fait ouvre le fichier en lecture/ecriture mais genere une erreur si le fichier est inexistant)
w+ : Ecriture "augmenté" (en fait ouvre le fichier en lecture/ecriture mais cree le fichier si il n'existe pas)
Et je ne vois pas comment extraire correctement les données WAV.
reprenons l'exemple si dessus :
int main(int argc, void *argv[])
{
/*
argv[0] = nom + chemin du programme lancé
argv[1] = premier argument
argv[2] = second argument
...
*/
FILE *fp_in, *fp_out; /* structure de type "pointeur de fichier" */
char buffer[10];
/*
se programme prend 2 argrument :
*/
if (argc != 3)
{
fprintf(stderr,"Nombre d'argument incorrect !\n"
"\tusage : foo fichier1 fichier2\n\n");
return -1; /* erreur */
}
/* ouverture du fichier 1 en mode lecture binaire "rb" : r pour read, b pour binary */
if ( ( fp_in = fopen(argv[1],"rb")) == NULL )
{
fprintf(stderr,"Impossible d'ouvrir le fichier %s !\n", argv[1]);
return -1; /* erreur */
}
/* ouverture du fichier 2 en mode ecriture binaire "wb" : w pour write, b pour binary */
if ( ( fp_out = fopen(argv[2],"wb")) == NULL )
{
fprintf(stderr,"Impossible d'ouvrir le fichier %s !\n", argv[2]);
fclose(fp_in); /* on ferme proprement le fichier ouvert ci-dessus */
return -1; /* erreur */
}
/* tant qu'on est pas a la fin du fichier :
f : comme file, premiere lettre de toutes les fonctions de fichiers
e : End
o : Of
f : File
*/
while(!feof(fp_in))
{
/*
fread : Reads data from a stream.
size_t fread( void *buffer, size_t size, size_t count, FILE *stream );
Return Value :
fread returns the number of full items actually read, which may be less than count if an error occurs
or if the end of the file is encountered before reaching count. Use the feof or ferror function to
distinguish a read error from an end-of-file condition. If size or count is 0, fread returns 0 and
the buffer contents are unchanged.
Parameters :
buffer : Storage location for data
size : Item size in bytes
count : Maximum number of items to be read
stream : Pointer to FILE structure
*/
fread( buffer, 1, 1, fp_in );
/*
fwrite : Writes data to a stream.
size_t fwrite( const void *buffer, size_t size, size_t count, FILE *stream );
Return Value :
fwrite returns the number of full items actually written, which may be less than count if an
error occurs. Also, if an error occurs, the file-position indicator cannot be determined.
Parameters :
buffer : Pointer to data to be written
size : Item size in bytes
count : Maximum number of items to be written
stream : Pointer to FILE structure
*/
fwrite(buffer, 1, 1, fp_out);
}
fclose(fp_in);
fclose(fp_out);
return 0;
}
voila
j'espere avoir été compréhensible
edit: correction de qq erreurs betes #honte#