Probleme de concatenuation

romainbisson Messages postés 88 Date d'inscription jeudi 25 octobre 2007 Statut Membre Dernière intervention 9 septembre 2014 - 9 mai 2008 à 17:31
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 - 9 mai 2008 à 20:25
Bonjour,

j'ai ce probleme avec dev c++

invalid conversion from `char' to `const char*'   -- ligne 24  

#include <stdio.h>
#include <string.h>


    int main(int argc, char *argv[]){
       
    char* nf = argv[1];
    FILE *f;
    FILE *out;
    char buffer[100000];
    char c=0, i=0;
    char str[10];
  
    f=fopen(nf,"r");
    out = fopen("out.txt","w");
    if (f != NULL){
        // Boucle de lecture des caractères un à un
        do
        {  
            i++;
            c = fgetc(f); // On lit le caractère
           
            if((i > 62) && (i < 69)){
            fprintf(out,"%c", c); // On l'affiche
            strcat(str,c);
            }
            if(i > 157){
                 i=0;
                 fprintf(out,"\n");
                 }
            }
        while( c != EOF);
        fclose(f);
        fclose(out);
        return 0;
        }
}

je souhaite faire une concatenuation mais sa ne marche pas, et ensuite j'aimerais comparer cette chaine avec une chaine contenant un espace si c'est le cas je n'ecrire pas dans le fichier, En gros, je ne veux pas que le caractere que trouve le fgets soit un espace entre 62 et 69. c'est comprehensible ?

car le fichier ressemble a ça sinon:

035211
034666




054865
208400
088855

et je souhaite qui ressemble a sa

035211
034666
054865
208400
088855

3 réponses

DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
9 mai 2008 à 17:43
Une solution :
strcat(str, (char *)c);

Shell
0
Cyr62110 Messages postés 65 Date d'inscription vendredi 10 février 2006 Statut Membre Dernière intervention 21 octobre 2009
9 mai 2008 à 17:43
Pour concatener un caractére à une chaine :
int ibuf = strlen(str);
str[ibuf] = c;
str[ibuf+1] = '\0';
Voila pour ton probleme de concatenation.
Bye
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
9 mai 2008 à 20:25
deathcrash >> Ben non. strcat demande une adresse. Cependant, là tu passes la valeur d'un caractère.

Normalement, pour écrire 1 caractères à la fois dans un buffer, on maintien un pointeur sur la fin de ce buffer.

Mais là, c'est la lecture caractère par caractère d'un fichier. C'est nulle coté performance
Utiliser fread à la place et lire par bloc. Ensuite, on effectue les traitements sur le buffer.

C++ (@++)<!--
0
Rejoignez-nous