• [^] # Re: strchr

    Posté par . En réponse au message sscanf et expressions régulières. Évalué à 1.

    Merci !

    ça marche niquel ! c'est EXACTEMENT ce qu'il me faut....

    while (fgets(buffer, MAX_CHAR_BY_LINE, fp_XF86Config) != NULL) {
    sp_fin = strchr(buffer, '\t');
    if (sp_fin == NULL) {
    continue;
    }
    *sp_fin = '0円';
    strcpy(champ1, buffer);
    *sp_fin = '\t';
    sp_debut = sp_fin + 1;
    sp_fin = strchr(sp_debut, '\t');
    if (sp_fin == NULL) {
    continue;
    }
    *sp_fin = '0円';
    strcpy(champ2, sp_debut);
    *sp_fin = '\t';
    sp_debut = sp_fin + 1;
    sp_fin = strchr(sp_debut, '\n');
    if (sp_fin == NULL) {
    continue;
    }
    *sp_fin = '0円';
    strcpy(champ3, sp_debut);
    *sp_fin = '\n';
    printf("c1 [%s] c2 [%s] c3 [%s]\n", champ1, champ2, champ3);
    }

    en effet il y avait des commentaires en debut de fichier ;)

    cependant je ne suis pas sur de comprendre tout le code....
    sp_fin = strchr(buffer, '\t');
    -> on recherche une tabulation dans le fichier....
    if (sp_fin == NULL) {
    continue;
    }
    -> s'il n'y en à pas, on zappe
    *sp_fin = '0円';
    -> on remplace la tabulation par une fin de chaine (vu que c'est un pointeur, ça marche)...
    strcpy(champ1, buffer);
    -> ...pour faire croire à la fin du buffer, afin que strcpy la copie dans chaine1
    *sp_fin = '\t';
    -> on (re)remplace par une tabullation....
    sp_debut = sp_fin + 1;
    -> on saute par dessus la tabulation, et on recommence

    c'est bien ça ???
    en tout cas merci, ca me parrait "accrobatique" mais sa marche ! je pense que c'est quand même moins hasardeux que sscanf...

    Merci encore...