Aller au contenu
Règlement du forum ×
IPTV et arnaques ×

Aide en C


Boss_Med

Messages recommandés

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

Lien vers le commentaire
Partager sur d’autres 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);

Lien vers le commentaire
Partager sur d’autres 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.

Modifié par tixxDZ
correction de sizeof
Lien vers le commentaire
Partager sur d’autres 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.

Lien vers le commentaire
Partager sur d’autres 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.

Lien vers le commentaire
Partager sur d’autres 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.

Lien vers le commentaire
Partager sur d’autres 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

Lien vers le commentaire
Partager sur d’autres 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.

Lien vers le commentaire
Partager sur d’autres 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

Lien vers le commentaire
Partager sur d’autres 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)

Lien vers le commentaire
Partager sur d’autres 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é).

Lien vers le commentaire
Partager sur d’autres 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é :)

Lien vers le commentaire
Partager sur d’autres 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.

Lien vers le commentaire
Partager sur d’autres 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 :)

Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • Messages

    • Comparing Stainless Steel and Plastic Shower Drain China Options When it comes to selecting a shower drain, choosing the right material is essential for performance, durability, and aesthetic appeal. In the market of Shower Drain China , two of the most popular options are stainless steel and plastic. Each material offers unique advantages and considerations, making it important to understand their differences before making a decision. Material Properties and Advantages   Feature Stainless Steel Shower Drain Plastic Shower Drain Durability Highly durable and resistant to corrosion Lightweight but less durable over time Corrosion Resistance Excellent resistance, ideal for wet environments Generally resistant but can degrade under harsh chemicals Maintenance Easy to clean and maintain surface shine May require more frequent cleaning due to scratches or discoloration Weight Heavier, providing a sturdy feel Very lightweight, easy to handle and install Cost Typically higher upfront cost More affordable and budget-friendly Aesthetic Appeal Sleek, modern metallic finish Available in various colors but less premium appearance Installation Requires careful handling due to weight Easy to install and replace Which Material Is Best for Your Shower Drain? Stainless Steel: Ideal for commercial bathrooms, luxury residences, and places where durability and design are priorities. Its robust nature and resistance to rust ensure long-term performance. Plastic: Suitable for budget-conscious projects or locations with lighter use, such as residential bathrooms with less heavy foot traffic. Plastic drains offer versatility and cost savings. Considerations for Buyers Longevity vs. Budget: Stainless steel drains often justify their higher cost with a longer lifespan and less frequent replacement. Plastic drains are cost-effective but may need replacement sooner. Environmental Impact: Stainless steel is recyclable, while plastic drainage components may contribute to environmental waste if not properly recycled. Maintenance Preferences: Stainless steel drains resist staining and are easier to keep clean. Plastic may show wear and discoloration faster. Why Choose Hasen-home for Your Shower Drain China Needs? At Hasen-home, we manufacture high-quality Shower Drain China products in both stainless steel and plastic varieties to suit diverse customer needs. Our products combine durability, functionality, and design excellence to meet international standards. With rigorous quality control and reliable service, Hasen-home is your trusted partner for drainage solutions. Explore our full range at https://www.hasen-home.com .
    • Is Anionic Polyacrylamide Emulsion the Key to Better Dye Removal? Textile wastewater treatment is a growing concern for industries seeking both environmental compliance and operational efficiency. One major challenge is removing synthetic dyes that resist conventional treatment. Can anionic polyacrylamide emulsion be the key to achieving clean and color-free effluent? Why Is Textile Wastewater So Complex? Wastewater from textile processes often contains large amounts of reactive and acid dyes, surfactants, sizing agents, and suspended solids. These substances not only give the water a strong color but also raise chemical oxygen demand and affect biological treatment efficiency. Traditional chemical coagulants may struggle to address such complexity without secondary impacts like excessive sludge generation. How Does Anionic Polyacrylamide Emulsion Work? Anionic polyacrylamide emulsion carries a negative charge, allowing it to interact with positively charged dye molecules and other particles in the wastewater. This interaction causes fine particles to aggregate into larger flocs, which then settle more easily. The emulsion form dissolves faster and more uniformly than powder products, making it highly suitable for continuous dosing systems. In textile wastewater treatment, this emulsion can be applied at several stages including pretreatment, coagulation, clarification, and sludge handling. It enhances dye removal, improves solid-liquid separation, and ultimately increases the clarity of discharged water. Where Is It Most Effective? In real-world applications, anionic polyacrylamide emulsion is effective in the following areas: Pretreatment where it supports the initial destabilization of dye molecules Coagulation-flocculation to build strong and fast-settling flocs Sedimentation to improve water clarity by accelerating the settling process Sludge dewatering to reduce water content and minimize disposal costs This versatility makes it a preferred choice for textile manufacturers aiming to improve wastewater quality and system efficiency. What Benefits Can You Expect? Users of anionic polyacrylamide emulsion often report: Faster and more complete dye removal Lower chemical consumption and cost Better sludge characteristics for easier handling Reduced environmental footprint due to improved water recycling Its broad pH compatibility and strong performance in high-color wastewater make it a reliable tool in textile operations. Choose Polyacrylamidefactory for Proven Performance If your factory is looking for a dependable solution to difficult dye removal challenges, Polyacrylamidefactory offers tailored anionic polyacrylamide emulsion products engineered for textile wastewater treatment. Our formulations are designed to deliver rapid flocculation, superior settling, and reduced sludge generation, all while helping your plant meet environmental standards. With years of industry experience and technical support, Polyacrylamidefactory ensures that your wastewater treatment process is both efficient and sustainable. Partner with us for performance you can trust. Learn more and contact us athttps://www.polyacrylamidefactory.com
    • le tutoriel que je vous ai envoyé a-t-il fonctionné sur votre matériel ?
    • je suis sur le cloudflare dns et je n’ai pas ce problème.
×
×
  • Créer...