IL SEMBLE QUE VOUS UTILISEZ ADBLOC POUR BLOQUER LA PUBLICITÉ, AUCUNE PUB INTRUSIVE SUR FDZ ET PAS DE POPUP
FDZ EST GRATUIT DONC MERCI DE DÉSACTIVER VOTRE ADBLOCK ET DE BIEN VOULOIR PARTICIPER ET JOUER LE JEU


PAR SUITE D'ABUS LES SERVEURS CCCAM ET ABONNEMENT NE SONT PAS TOLÉRÉS SUR LE FORUM


Page 1 sur 2 12 DernièreDernière
Affichage des résultats 1 à 10 sur 18
Share |

Discussion: Aide en C

  1. #1
    Date d'inscription
    janvier 2008
    Localisation
    oran
    Messages
    1 080
    Remerciements
    6
    Remercié 3 fois dans 3 messages
    Pouvoir de réputation
    11

    Par défaut Aide en C

    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

    Code PHP:
    #include<stdio.h>
    #include<stdlib.h>

    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(c80fr)!=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

  2. #2
    Date d'inscription
    janvier 2008
    Localisation
    Ile-de-France
    Messages
    8 070
    Remerciements
    275
    Remercié 417 fois dans 209 messages
    Pouvoir de réputation
    10

    Par défaut Re : Aide en C

    Salem,

    Pour la fonction system, je pense qu'il suffit de concat&#233;ner le param&#232;tre C &#224; la cha&#238;ne "wget ", le programme ne continuera la boucle que lorsque cette fonction system soit termin&#233;e donc pas de soucis.

    &#224; chaque it&#233;ration d ela boucle

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

    Core i7 6700K@
    4Ghz - Noctua NH-U9S
    - Asus Z170-PRO GAMING - DDR4 G.Skill Ripjaws 4 x 8 Go @2800Mhz - KFA2 GTX 980 Ti OC Black Edition 6Go - Toshiba P300 1 To & Sandisk SSD 240 Go - Corsair Vengeance C70 - LEPA MaxBron 650W - LG GH22NS90 - Logitech G710+ & Corsair Gaming M65 - Creative Chat HD 720p - Liyama Prolite GB2488HSU
    متل الرجل الذي يبيع السمك في البحر من امامكم و العدو من وراء كل رجل عظيم امرأة
    -------


    Cliquer ici pour agrandir


  3. #3
    Date d'inscription
    janvier 2008
    Messages
    250
    Remerciements
    0
    Remercié 0 fois dans 0 messages
    Pouvoir de réputation
    10

    Par défaut Re : Aide en C

    or try this one if mouradski's solution doesn't work.
    Code:
    else {
    printf("T&#233;l&#233;chargement des liens : \n");
    while(fgets(c, 80, fr)!=NULL)
    printf("&#37;s",c); 
    char param[80];
    strcpy(param, "wget ");
    strcat(param, c);
    system(param);
    }

  4. #4
    Date d'inscription
    mai 2008
    Messages
    44
    Remerciements
    0
    Remercié 0 fois dans 0 messages
    Pouvoir de réputation
    0

    Par défaut Re : Aide en C

    LA SOLUTION a &#233;t&#233; donn&#233;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&#233;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&#233;gulier
    "man 2 stat"
    */

    2) tu peut utiliser la fonction getline() au lieu de fgets(), pour tout lire et ne pas t'inquit&#233; 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&#233; la m&#233;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 &#37;s", SIZE, url);
    system(buffer);
    free(buffer);
    /* il faut check&#233; les erreurs */

    - MIEUX ENCORE, si tu ne veut pas attendre que system() retourne:
    - fork()
    - execv(argv[0], argv)

    - FAIT ATTENTION &#224; la valeur de url (qui la control), exemple:
    url == "google.com; echo hello"
    system("wget google.com; echo hello");
    /* le code echo hello s'&#233;x&#233;cute aussi, faille de s&#233;curit&#233; */

    4) si tu veut coder aussi ton compresseur/d&#233;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&#233; avec la commande: "info libc"
    - tu aura tout gestion d'&#233;rreur m&#233;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&#233;sol&#233; pour les fautes d'ortho.
    Dernière modification par tixxDZ ; 15/05/2009 à 13h24. Motif: correction de sizeof

  5. #5
    Date d'inscription
    janvier 2008
    Localisation
    oran
    Messages
    1 080
    Remerciements
    6
    Remercié 3 fois dans 3 messages
    Pouvoir de réputation
    11

    Par défaut Re : Aide en C

    @Mouradski : le programme me donne "Erreur de segmentation".
    @Darkvader : &#231;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&#232;re tu m'a bien aid&#233; m&#232;me si il y a des choses que je ne comprend pas mais je vais me documenter.

  6. #6
    Date d'inscription
    janvier 2008
    Messages
    250
    Remerciements
    0
    Remercié 0 fois dans 0 messages
    Pouvoir de réputation
    10

    Par défaut Re : Aide en C

    Cliquer ici pour agrandir Envoyé par Boss_Med Cliquer ici pour agrandir
    @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.

  7. #7
    Date d'inscription
    janvier 2008
    Localisation
    oran
    Messages
    1 080
    Remerciements
    6
    Remercié 3 fois dans 3 messages
    Pouvoir de réputation
    11

    Par défaut Re : Aide en C

    ah ok merci j'ai tr&#233;s bien compris maintenant

  8. #8
    Date d'inscription
    janvier 2008
    Localisation
    Ile-de-France
    Messages
    8 070
    Remerciements
    275
    Remercié 417 fois dans 209 messages
    Pouvoir de réputation
    10

    Par défaut Re : Aide en C

    Cliquer ici pour agrandir Envoyé par Boss_Med Cliquer ici pour agrandir
    @Mouradski : le programme me donne "Erreur de segmentation".
    C'est sûrement qu'il n'a pas digéré le char* comme char[] Cliquer ici pour agrandir
    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.

    Core i7 6700K@
    4Ghz - Noctua NH-U9S
    - Asus Z170-PRO GAMING - DDR4 G.Skill Ripjaws 4 x 8 Go @2800Mhz - KFA2 GTX 980 Ti OC Black Edition 6Go - Toshiba P300 1 To & Sandisk SSD 240 Go - Corsair Vengeance C70 - LEPA MaxBron 650W - LG GH22NS90 - Logitech G710+ & Corsair Gaming M65 - Creative Chat HD 720p - Liyama Prolite GB2488HSU
    متل الرجل الذي يبيع السمك في البحر من امامكم و العدو من وراء كل رجل عظيم امرأة
    -------


    Cliquer ici pour agrandir


  9. #9
    Date d'inscription
    mai 2008
    Messages
    44
    Remerciements
    0
    Remercié 0 fois dans 0 messages
    Pouvoir de réputation
    0

    Par défaut Re : Aide en C

    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 &#37;s", sizeof(buffer), url);

    car le code sizeof(buffer) va retourn&#233; 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' &#224; la fin */

    d&#233;sol&#233; c'&#233;t&#233; &#224; la va vite (la pri&#232;re) Cliquer ici pour agrandir


    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# Cliquer ici pour agrandir

    salam

  10. #10
    Date d'inscription
    janvier 2008
    Localisation
    oran
    Messages
    1 080
    Remerciements
    6
    Remercié 3 fois dans 3 messages
    Pouvoir de réputation
    11

    Par défaut Re : Aide en C

    ok je pige une chose est sur il y a beaaaaaaaacoup de chose &#224; apprendre Lol

Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. aide moi
    Par ymas06 dans le forum Guesra
    Réponses: 28
    Dernier message: 08/07/2012, 12h42
  2. Aide
    Par layachi dans le forum Juridique et administratif
    Réponses: 0
    Dernier message: 05/05/2010, 17h01
  3. Aide sur WoW s.v.p
    Par Deathowl dans le forum Jeux en Réseau / LAN Arena
    Réponses: 4
    Dernier message: 09/05/2009, 20h51
  4. J'ai BESOIN D'aide,qui Peut M'aide ??????
    Par ryadh dans le forum Développement DZ
    Réponses: 0
    Dernier message: 17/02/2009, 13h58
  5. aide svp
    Par abdoudz dans le forum Windows
    Réponses: 14
    Dernier message: 06/05/2008, 08h01

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •  
[Auto utilitaire DZ] [Webimag] [Algérie Info] [Guide Algérie] [Mosquée ALBADR MEAUX] [Photographe MARIAGE]

is PageRank Checking Icon