Jump to content
Boss_Med

Aide en C

Recommended Posts

Salut,

j'apprenais la gestion des fichiers en c pour ça j'ai créé un fichier qui contient des liens zip et je l'ai nommé res

puis j'ai mis le code suivant

 

#include
#include

main()
{
FILE *fr;
char c[80];
fr = fopen("res","r");
if (fr==NULL){
printf("Fichier vide\n");
return 1;
}
else {
printf("Téléchargement des liens : \n");
while(fgets(c, 80, fr)!=NULL)
printf("%s",c); // j'affiche les liens simplement pour tester
system("wget "); //qu'est ce que je met ici pour les télécharger à savoir la fonction system ne prend qu'un seul argument
}
fclose(fr);
return 0;
}

merci pour l'aide

PS:je suis sous linux

Share this post


Link to post
Share on other sites

Salem,

 

Pour la fonction system, je pense qu'il suffit de concaténer le paramètre C à la chaîne "wget ", le programme ne continuera la boucle que lorsque cette fonction system soit terminée donc pas de soucis.

 

à chaque itération d ela boucle

 

char* parametre = "wget ";
strcat(parametre ,c);
system(parametre);

Share this post


Link to post
Share on other sites

or try this one if mouradski's solution doesn't work.

else {
printf("Téléchargement des liens : \n");
while(fgets(c, 80, fr)!=NULL)
printf("%s",c); 
char param[80];
strcpy(param, "wget ");
strcat(param, c);
system(param);
}

Share this post


Link to post
Share on other sites

LA SOLUTION a été donnée par mouradski_21 et Darkvader, voici quelques infos vraiment utiles pour un meilleur code:

 

 

1) fopen() retourne NULL en cas d'erreurs et non pas si le fichier est vide, pour avoir la déscription:

perror("erreur fichier");

/* perror() ou strerror()

si tu veut voir la taille de fichier tu utilise la fonction

stat() et la structure struct stat, le champ st_size pour les fichier

régulier

"man 2 stat"

*/

 

2) tu peut utiliser la fonction getline() au lieu de fgets(), pour tout lire et ne pas t'inquité de la taille de ton buffer:

- il faut definir la macro: #define _GNU_SOURCE

- pour avoir un exemple: "man 3 getline"

 

3) pour que la fonction system prend plusieurs arguments:

- alloué la mémoire au buffer selon la taille de l'input (argument de getline() + "wget ")

size_t SIZE == strlen("wget ") + size input;

buffer = (char *) malloc (SIZE);

memset(buffer, 0x00, SIZE);

snprintf(buffer, "wget %s", SIZE, url);

system(buffer);

free(buffer);

/* il faut checké les erreurs */

 

- MIEUX ENCORE, si tu ne veut pas attendre que system() retourne:

- fork()

- execv(argv[0], argv)

 

- FAIT ATTENTION à la valeur de url (qui la control), exemple:

url == "google.com; echo hello"

system("wget google.com; echo hello");

/* le code echo hello s'éxécute aussi, faille de sécurité */

 

4) si tu veut coder aussi ton compresseur/décompresseur: utilise la zlib

- /usr/share/doc/zlib*/

- "man zlib"

- le site de la zlib

 

 

5) UNE AUTRE MINE D'INFO pour la libc

- fait un stage bloqué avec la commande: "info libc"

- tu aura tout gestion d'érreur mémoire fichier ...

ESSAYE: "info libc"

 

Bonne chance et si tu veut vraiment programmer au top fait le sous linux *unix et il faut lire beaucoup de code source, bonne chance.

 

PS: il seut peut qu'il y a des erreurs et désolé pour les fautes d'ortho.

Edited by tixxDZ
correction de sizeof

Share this post


Link to post
Share on other sites

@Mouradski : le programme me donne "Erreur de segmentation".

@Darkvader : ça marche mais j'ai une petite question

strcpy(param, "wget ");

strcat(param, c);

ces deux instructions vont faire quoi au juste ?

 

@tixxDZ : merci mon frère tu m'a bien aidé mème si il y a des choses que je ne comprend pas mais je vais me documenter.

Share this post


Link to post
Share on other sites
@Mouradski : le programme me donne "Erreur de segmentation".

@Darkvader : ça marche mais j'ai une petite question

strcpy(param, "wget ");

strcat(param, c);

ces deux instructions vont faire quoi au juste ?

 

@tixxDZ : merci mon frère tu m'a bien aidé mème si il y a des choses que je ne comprend pas mais je vais me documenter.

 

strcpy "String Copy" copies the string "wget " into param, and then it concatenates param and c (wget + c) with strcat (String concat).

 

 

You can find all these instructions and more online.

Share this post


Link to post
Share on other sites
@Mouradski : le programme me donne "Erreur de segmentation".

 

C'est sûrement qu'il n'a pas digéré le char* comme char[] :D

je pense que c'est ce que DarkVader faisait allusion, ça passe avec le même type ie tableau de char.

 

mais sinon si t'es sur C/C++ un "wget " + param aurait fait l'affaire car le + est un opérateur surchargé pour le type chaîne de caractères.

Share this post


Link to post
Share on other sites

juste une petite correction Boss_med:

 

et si ton buffer et un pointeur de la sorte:

char *buffer = (char *) malloc (SIZE);

 

alors le code suivant est incorrecte (copie seulement 4 octets):

snprintf(buffer, "wget %s", sizeof(buffer), url);

 

car le code sizeof(buffer) va retourné 4 octets, c'est le size d'un pointeur sur 32 bits.

 

correction:

size_t SIZE == strlen("wget ") + size input;

char *buffer = (char *) malloc (SIZE);

snprintf(buffer, "wget %s", SIZE, url); /* snprintf() ajoute toujours le NULL '\0' à la fin */

 

désolé c'été à la va vite (la prière) :)

 

 

comme Darkvader a dit: tu peut trouver online ou avec la commande man

n'oublie pas la commande "info libc"

 

@mouradski_21

c'est ton background de c# :)

 

salam

Share this post


Link to post
Share on other sites

@mouradski_21

c'est ton background de c# :)

 

salam

 

lol :D wé, vive le transtypage à volonté :D et comme on dit "les ignorants sont bénis" moins j'en sais sur les rouages mieux c'est :D

Share this post


Link to post
Share on other sites
lol :D wé, vive le transtypage à volonté :D et comme on dit "les ignorants sont bénis" moins j'en sais sur les rouages mieux c'est :D

 

What's wrong with C#? it is a great language, you don't have to build everything from scratch, and certainly you don't have to reinvent the wheel, so don't feel offended by Tixxdz remarks. :)

 

C# is a subset of C++ which is a subset of C.

Share this post


Link to post
Share on other sites
What's wrong with C#? it is a great language, you don't have to build everything from scratch, and certainly you don't have to reinvent the wheel, so don't feel offended by Tixxdz remarks. :)

 

C# is a subset of C++ which is a subset of C.

 

Oui je pense aussi que le C# est un langage terriblement efficace, j'en suis même tombé amoureux :) je pense même que c'est le langage le plus productif du marché :)

 

Mais je penses qu'on doit arreter de trop chercher la simplilcité, d'ici quelques années on va programmer directement en UML, un clic de souris et c'est compilé :D :D et ça sera le chaumage pour toi :D

 

Tu lâches pas l'affaire de la roue hein :D

Share this post


Link to post
Share on other sites

C# is a subset of C++ which is a subset of C.

salam,

voici une citation de wikipédia:

Il est très proche du Java dont il reprend la syntaxe générale ainsi que les concepts (la syntaxe reste cependant relativement semblable à celles de langages tels que le C++ et le C). Un ajout notable à Java est la possibilité de surcharge des opérateurs, inspirée du C++. Toutefois, l'implémentation de la redéfinition est plus proche de celle du Pascal Objet.

donc le c# est "un mélange" du c++ java et pascal (c# étant créé par le même créateur que le pascal)

Share this post


Link to post
Share on other sites

Yes what Darkvader says is correct, C# is great and each language has its power.

 

IMHO: if you are not doing low level programming then use Java, C#, Python, ... personally i code this things with Perl or Python.

 

The important thing is to learn and to code cool and new stuff.

 

I didn't mean to offen any body it was a simple way to clarify mouradski_21 solution.

 

lol mouradski_21:

j'éspère que tu va me laisser nager à Ben M'hidi (il me faut une boué).

Share this post


Link to post
Share on other sites

I didn't mean to offen any body it was a simple way to clarify mouradski_21 solution.

 

lol mouradski_21:

j'éspère que tu va me laisser nager à Ben M'hidi (il me faut une boué).

 

Je viens de te blacklister auprès des gardiens des parcs auto des plages de ben m'hidi :D

 

non, je ne me suis pas du tout senti offensé :)

Share this post


Link to post
Share on other sites
Oui je pense aussi que le C# est un langage terriblement efficace, j'en suis même tombé amoureux :) je pense même que c'est le langage le plus productif du marché :)

 

Mais je penses qu'on doit arreter de trop chercher la simplilcité, d'ici quelques années on va programmer directement en UML, un clic de souris et c'est compilé :D :D et ça sera le chaumage pour toi :D

 

Tu lâches pas l'affaire de la roue hein :D

 

lol. Drag and drop programming is already here. As for me losing my job, don't worry, there are plenty of dishes to be washed in some restaurants.

Share this post


Link to post
Share on other sites
lol. Drag and drop programming is already here. As for me losing my job, don't worry, there are plenty of dishes to be washed in some restaurants.

 

Je ne crois pas que tu fasses plus d'une journée dans le lavage de vaisselle :D c'est pas aussi simple qu'un Dishes.Wash() :D l'objet dans la vie réel n'est pas autonome :D il faut vraiment connaitre sa roue :)

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.




  • Posts

    • Histoire est claire sur ce point : la légende des musulmans fanatiques s'abattant sur le monde imposant l'Islam, à la pointe de l'épée, aux peuple vaincus est un des plus fantastiques et absurdes mythes que les historiens ont pu répéter” Lacy O'Leary (Historien) dans “Aux carrefours de l'Islam” p. 28. Un autre témoignage ? Dans “Le déclin et la chute de l'Empire Romain”, Edouard Gibbon - célèbre historien - dit:”le succès phénoménal de l'Islam est dû au caractère exceptionnel de sa spiritualité et de son programme social et politique. L'expansion de l'Islam est l'une des plus grandes révolutions de l'histoire...” Puis un autre de Ignacio Olagüe ( “Les arabes n'ont jamais envahi l'Espagne” chez Flammarion ) : “Comment une poignée de nomades, venus du fond de l'Arabie, auraient-ils pu imposer leur langue et la loi de l'Islam aux quinze millions d'habitants vivant sur les 600 000 kilomètres carrés de la Péninsule Ibérique ?” Laissez le soin à nos détracteurs de répondre... Les mêmes témoignages existent pour l'Inde, l'Europe Orientale, l'Asie...La liste serait fort longue... Ensuite il y a des pays où nul soldat musulman n'a posé le pied: Indonésie (100 millions de musulmans), Malaisie, Afrique etc... où un pourcentage très élevé de ces populations est musulman. Où est l'épée? De nos jours, oui, de nos jours, l'Islam est la seule religion en très large expansion, et les musulmans n'ont pas d'épée! Contrairement à l'Occident, les pays musulmans n'ont envahi aucun pays souverain depuis 1000 ans. Mais l'Islam progresse dans les cœurs, grâce à la cohérence, à la vérité, à la sagesse de son message. C'est tout. Mais nous dira t-on les musulmans ont bien commencé par être des agresseurs pour pouvoir conquérir tous ces territoires christianisés, par principe hostiles à l'Islam naissant. Il y a les mythes et il y a l'histoire. Attachons nous à l'histoire, et non aux mythes. Bien avant sa mort, le prophète avait envoyé des ambassadeurs de par le monde, pour inviter les grands empereurs d'alors vers l'Islam. Certains les ont bien accueilli et se sont convertis, d'autres ont refusé et ont payé un tribut. D'autres encore comme l'empereur de Byzance, les ont rejeté, et ce dernier a été jusqu'à faire assassiner l'ambassadeur de prophète, sans raison, ni excuse! Cela donc contribua à déclencher la guerre entre cette “superpuissance” d'alors et les musulmans. Ces derniers ne sont donc nullement responsables du début des hostilités entre chrétiens et musulmans. Hostilités dont ils sortirent grand vainqueurs. Et même alors, les musulmans n'imposèrent nullement leur foi aux pays conquis. Ils accordèrent aux juifs et aux chrétiens de ces pays un statut de protégé (“Dhimmi”) de l'état islamique, garantissant leurs biens, leurs églises ou synagogues, et bien sûr leur culte. Car la religion repose sur la foi et la volonté. Elle n'aurait aucun sens autrement. La force permet les conquêtes, pas les conversions! Pourquoi filtrer l'Histoire? Souvenons-nous par exemple, du Concile de 680 à Constantinople, capitale de l'empire romain. Durant ce Concile il fut décidé d'une déclaration de guerre totale à l'Islam, dont les buts affichés, sans ambiguïté, étaient de faire disparaître l'Islam, le Coran, les enseignements du “prophète hérétique” et d'exterminer tous les musulmans de la surface de la terre! Charité chrétienne... À comparer aux statuts privilégiés accordés par les musulmans aux chrétiens...Et cet appel chrétien au génocide a perduré jusqu'aux grandes guerres coloniales (voir infra), pour imposer leur conception de la “civilisation” à l'ensemble de ces peuples “barbares” souvent musulmans. Et nous savons tous les dizaines de millions de morts que cet “apport de civilisation” a justifié! Quoiqu'il en soit, croyez-vous qu'un homme seul, puis ensuite, la poignée d'homme qui a dû émigrer à Médine à cause des persécutions mecquoises aient pu imposer l'Islam aux peuples d'Arabie et d'ailleurs? Seul un miracle le pouvait. Et le miracle fut. Seule la haine aveuglante des adversaires de Mohammad (PBSL) peut expliquer cet acharnement à renier des faits historiquement indéniables, les travestissant à loisir pour pouvoir répandre ce qui leur sied. Ne peuvent-ils pas voir que la “seule épée” que brandissait Mohammad (PBSL) c'était l'épée de sa foi en l'unicité de Dieu, de la Miséricorde divine, de la compassion, de la sagesse d'un prophète de Dieu ? Celle-là même qui vainc et convainc l'ennemi en purifiant les mœurs, purifiant les cœurs. Il faut inviter tous ceux qui affirment que dans le passé, un peuple, ait été contraint d'embrasser l'Islam, d'en amener UNE preuve d'une source historiquement fiable, et dont l'auteur puise l'information d'autres choses que du postulat de sa conviction personnelle. Fausse accusation de médias: l'Islam s'est propagé par la Force-Zakir Naik https://www.youtube.com/watch?v=Hf6flYTbP0c    
    • C'est pour les entreprises, et il devrait changer d'hébergeur, le site est trop lent.
    • juste une anecdote : je suis passé chez LG pour demander quand arrivera "la gamme 2020 TV"; vu que dans les autres pays du monde c'est deja dispo, y compris le maroc...et voici sa réponse: "wallah ya kho aucune idée....rak deja mlih que tu trouves la gamme 2019 en ALGERIE avec tous les problemes li kayen" ma reaction: 😵......😬    
    • j'ai posé cette question dans un autre topic qu'un gars a ouvert, mais il ne m'a jamais répondu.... donc je relance ici, peut etre que j'aurai plus de chance: 1- y a t-il en ALGERIE un representant/distributeur officiel de la marque TCL ?  en esperant avoir une réponse
    • je relance ce topic mort...avec zaama la "nouvelle revolution en ALGERIE" - paiement exclusivement via les cartes ! pas de cash !  https://corposmart.com.dz/  
×
×
  • Create New...