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

    • merci cest sympa , suis la pour ca pas que pour vendre , c est ça le sav , on lâche pas temps que ça ne fonctionne pas , et si au final l'offre prise ne correspond pas j en ai bq d autre à proposer .. y en a pour tout les goûts toutes les bourses   
    • Bon voilà, ça fonctionne Un grand merci à MichelDZ, le pauvre, 2h hier à essayer de faire fonctionner ca sur mon pc. Aller savoir pourquoi, mais rien ne fonctionnait, pas moyen de faire une machine virtuelle, et les logiciels habituels ne voulait rien afficher, allez comprendre pourquoi, des fois il ne faut pas grand-chose pour que ca parte en cacahouète.  Il n'a pas lâché l'affaire, j'avais abandonné avant lui ^^ mais il a réussi à me le faire fonctionner.  Il m’a même relancé ce matin, savoir si ca allait toujours bien.  👍 Étant ma 1er iptv, je manque de point de comparaison, pour ce qui est du bouquet, je ne pourrais pas dire si c'est mieux ou moins bien que d'autres, mais je suis ravi, ceux qui se plaignent sont difficiles, à ce prix, c'est fou toutes ces chaines, et cette collection de films et séries. Mais pourquoi je ne suis pas venu avant, au lieu de me faire ch** avec le streaming. Enfin voilà, SAV au top, et offre complète, un vendeur que je recommande et garde précieusement dans mes contacts. 🥰
    • Alors que nous peinons à déployer du 100 % fibre optique et à sortir du débit de base  mesquin de 10Mbps, ailleurs le monde scientifique travaille déjà depuis plusieurs années au réseau Internet de demain. Vous avez sûrement au moins entendu parler de la théorie physique sur laquelle il se base : la mécanique quantique. Pour résumer, il s'agit de l'étude des comportements des particules à l'échelle des atomes et plus petit. Pour la première fois, des chercheurs ont créé un système qui relie ces deux composants clés et utilise des fibres optiques classiques pour transmettre les données quantiques. L'exploit a été réalisé par des chercheurs de l'Imperial College de Londres, de l'Université de Southampton et des universités de Stuttgart et de Wurzburg en Allemagne, et les résultats ont été publiés dans Science Advances . Le co-premier auteur , le Dr Sarah Thomas , du Département de physique de l'Imperial College de Londres, a déclaré : « L'interfaçage de deux appareils clés ensemble est une étape cruciale dans la mise en réseau quantique, et nous sommes vraiment ravis d'être la première équipe à avoir pu pour le démontrer. » Le co-premier auteur Lukas Wagner, de l’Université de Stuttgart, a ajouté : « Permettre aux emplacements longue distance, et même aux ordinateurs quantiques, de se connecter est une tâche essentielle pour les futurs réseaux quantiques. » Communication longue distance Dans les télécommunications classiques – comme Internet ou les lignes téléphoniques – les informations peuvent être perdues sur de grandes distances. Pour lutter contre cela, ces systèmes utilisent des « répéteurs » à des points réguliers, qui lisent et réamplifient le signal, garantissant ainsi qu'il arrive intact à sa destination. Toutefois, les répéteurs classiques ne peuvent pas être utilisés avec des informations quantiques, car toute tentative de lecture et de copie de ces informations les détruirait. Il s'agit d'un avantage dans un sens, dans la mesure où les connexions quantiques ne peuvent être « exploitées » sans détruire les informations et alerter les utilisateurs. Mais c’est un défi à relever pour les réseaux quantiques longue distance. Mais des chercheurs ont trouvé la solution. Une façon de surmonter ce problème consiste à partager des informations quantiques sous la forme de particules de lumière intriquées, ou photons. Les photons intriqués partagent des propriétés de telle manière que vous ne pouvez pas comprendre les unes sans les autres. Pour partager l'intrication sur de longues distances à travers un réseau quantique, vous avez besoin de deux appareils : un pour créer les photons intriqués et un pour les stocker et permettre leur récupération ultérieure. Il existe plusieurs dispositifs utilisés pour créer des informations quantiques sous forme de photons intriqués et pour les stocker, mais la génération de ces photons à la demande et la disponibilité d'une mémoire quantique compatible dans laquelle les stocker ont longtemps échappé aux chercheurs. Les photons ont certaines longueurs d'onde (qui, dans la lumière visible, créent des couleurs différentes), mais les dispositifs permettant de les créer et de les stocker sont souvent réglés pour fonctionner avec des longueurs d'onde différentes, ce qui les empêche de s'interfacer. Pour créer une interface entre les appareils, l’équipe a créé un système dans lequel les deux appareils utilisaient la même longueur d’onde. Un « point quantique » produisait des photons (non intriqués), qui étaient ensuite transmis à un système de mémoire quantique qui stockait les photons dans un nuage d'atomes de rubidium. Un laser a activé et désactivé la mémoire, permettant aux photons d'être stockés et libérés à la demande. Non seulement la longueur d'onde de ces deux appareils correspondait, mais elle était également à la même longueur d'onde que celle des réseaux de télécommunications utilisés aujourd'hui, ce qui permettait de la transmettre avec des câbles à fibre optique classiques, familiers aux connexions Internet quotidiennes. L’équipe va maintenant chercher à améliorer le système, notamment en s’assurant que tous les photons sont produits à la même longueur d’onde, en améliorant la durée de stockage des photons et en réduisant la taille de l’ensemble du système. Cependant, en tant que preuve de concept, il s'agit d'un pas en avant important, déclare le co-auteur Dr Patrick Ledingham de l'Université de Southampton : « Les membres de la communauté quantique tentent activement d'établir ce lien depuis un certain temps. Cela inclut nous, qui avons déjà tenté cette expérience à deux reprises avec différents dispositifs de mémoire et de points quantiques, remontant à plus de cinq ans, ce qui montre à quel point c'est difficile à réaliser. "Cette fois, la percée a été de réunir des experts pour développer et exécuter chaque partie de l'expérience avec un équipement spécialisé et de travailler ensemble pour synchroniser les appareils."  
×
×
  • Créer...