Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1281 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Petit soucis avec strcat

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Petit soucis avec strcat

n°1445260
obut76
Posté le 20-09-2006 à 13:32:24  profilanswer
 

Salut,
 J'ai un (petit) soucis avec un petit prog C au niveau de l'instruction strcat dans le listing suivant:
 
#include <stdio.h>
#include <string.h>
#define ERREUR_NBPARAM   1
#define ERREUR_OUVERTURE  1
#define LONG    256
 
 
int longueur( char *chaine )
{
 int index = 0;
 while( chaine[ index ++ ] );
 return index;
}
 
int main(int argc,char *argv[], char *env[])
{
 
 //Déclaration des variables globales
 FILE *f1;
 int c;
 int n1,n2,ind_ligne =0 ;
 char zone[256];
 char ligne[256];
 
 
 if (argc < 1 )
 {
  printf("Anomalies sur le nombre de parametres\n" );
  printf("Nb param saisi: %d %s",argc,"\n" );
  return ERREUR_NBPARAM;
 }
 if ((f1 = fopen(argv[1],"r" )) == NULL)
    {
  printf("Impossible d'ouvrir le fichier données en lecture: %s %s",argv[1],"\n" );
    return ERREUR_OUVERTURE;
    }
 // Lecture du flux
 while (fgets(ligne,LONG,f1) != NULL)   /*  stop sur fin de fichier ou erreur  */
    {
   /*   utilisation de ligne   */
  ind_ligne=0;
  strcpy(zone,"" );
  printf("NB carac. de la ligne: %i \n",longueur(ligne) );
  while (ind_ligne < longueur(ligne)  )
  {    
   printf("zone: %s\n",zone);
   printf("ligne: %c\n",ligne[ind_ligne]);
  strcat(zone,ligne[ind_ligne] );
   ind_ligne++;
  }
  printf("%s \n",zone);
  n1++;
 }
 printf("Nombre de ligne dans le fichier : %s %d\n",argv[1],n1);
 fclose(f1);
}
 
 
A chaque compilation j'obtiens:
comparaison.c: In function `main':
comparaison.c:62: warning: passing arg 2 of `strcat' makes pointer from integer without a cast
 
Le message est clair mais je tourne en rond...

mood
Publicité
Posté le 20-09-2006 à 13:32:24  profilanswer
 

n°1445264
_darkalt3_
Proctopathe
Posté le 20-09-2006 à 13:35:27  profilanswer
 

tu passe un char en second paramètre au lieu d'un pointeur


---------------
Töp of the plöp
n°1445267
obut76
Posté le 20-09-2006 à 13:38:15  profilanswer
 

ok: je remplace et met:  
char *ligne;
 
 
et j'obtiens la meme erreur de compilation...je suis sur que cela est trop con

n°1445268
_darkalt3_
Proctopathe
Posté le 20-09-2006 à 13:39:41  profilanswer
 

strcat(zone,ligne)


---------------
Töp of the plöp
n°1445273
obut76
Posté le 20-09-2006 à 13:41:22  profilanswer
 

Oué mais si je vais lire caractere par caractere la ligne..pour la mettre dans une variable dés que je suis tombé sur un caractere spécial (pas encore dans le prog)/

n°1445275
obut76
Posté le 20-09-2006 à 13:41:39  profilanswer
 

je veux cumulé les caracteres dans zone

n°1445280
_darkalt3_
Proctopathe
Posté le 20-09-2006 à 13:46:35  profilanswer
 

alors pourquoi utilises tu strcat ?
t'as lu ce que cela prenait en argument et le résultat de cette fonction ?


---------------
Töp of the plöp
n°1445283
obut76
Posté le 20-09-2006 à 13:48:05  profilanswer
 

oui 1 *char
et en deux const * char
 
Bon bah si je veux cumuler des char dans un *char je peux pas utiliser cette fonction alors?

n°1445284
franceso
Posté le 20-09-2006 à 13:49:04  profilanswer
 

fais le à la main, ça ira plus vite...
 
 
EDIT: strcat concatène deux chaines de caractères. Toi, tu veux concaténer un caractère au bout d'une chaine. C'est pas la même chose...


Message édité par franceso le 20-09-2006 à 13:50:21

---------------
TriScale innov
n°1445285
obut76
Posté le 20-09-2006 à 13:49:58  profilanswer
 

Cad?
suis en train de reprendre mais cours de C, donc quelques lacunes

mood
Publicité
Posté le 20-09-2006 à 13:49:58  profilanswer
 

n°1445287
_darkalt3_
Proctopathe
Posté le 20-09-2006 à 13:50:10  profilanswer
 

obut76 a écrit :

oui 1 *char
et en deux const * char
 
Bon bah si je veux cumuler des char dans un *char je peux pas utiliser cette fonction alors?


pourquoi diantre t'acharner à mettre un char en lieu et place d'un char* ?
tu crois pas que ca va marcher quand meme ?
 
Sinon une de tes options possibles est sprintf.


---------------
Töp of the plöp
n°1445288
_darkalt3_
Proctopathe
Posté le 20-09-2006 à 13:50:55  profilanswer
 

obut76 a écrit :

Cad?
suis en train de reprendre mais cours de C, donc quelques lacunes


reprend aussi un peu d'orthographe et de grammaire alors, sans vouloir être désagréable.


---------------
Töp of the plöp
n°1445289
Elmoricq
Modérateur
Posté le 20-09-2006 à 13:51:15  profilanswer
 

Si c'est juste un caractère, utilises snprintf() [:spamafote]
snprintf(zone, 256, "%s%c",zone, ligne[ind_ligne]);
 
Ou alors tu le fais à la main, encore mieux puisque tu es dans une boucle :

size_t len_zone = strlen(zone);
 
while ( machin avec ind_ligne)
{
   /* blahblah */
   zone[len_zone++] = ligne[ind_ligne];
   /* blahblah */
}
zone[len_zone] = '\0';


 

obut76 a écrit :

Cad?
suis en train de reprendre mais cours de C, donc quelques lacunes


Non, il ne s'agit pas là de lacunes. Tu apprends le C, tu ne le reprends pas.
 
Pour t'aider sur ce que fait une fonction : man nom_de_la_fonction
Soit en ligne de commande sur unixoïde, soit dans Google.


Message édité par Elmoricq le 20-09-2006 à 13:54:34
n°1445293
franceso
Posté le 20-09-2006 à 13:55:01  profilanswer
 

obut76 a écrit :

Cad?
suis en train de reprendre mais cours de C, donc quelques lacunes


 
deux possibilités principales à mon avis:
1- sprintf comme t'a dit _darkalt3_
2- tu fais tout à la main: tu gardes un indice pour l'écriture dans 'zone' et tu remplaces ton bloc avec le strcat par:

Code :
  1. zone[ind_zone]=ligne[ind_ligne]; //on copie le caractère à la fin de la zone
  2. ind_zone++; ind_ligne++;         // on incrémente les pointeurs
  3. zone[ind_zone]=0;                // on termine zone par le caractère nul


 
EDIT: Grilled  :(


Message édité par franceso le 20-09-2006 à 13:56:10

---------------
TriScale innov
n°1445295
acryline
Posté le 20-09-2006 à 13:55:30  profilanswer
 

_darkalt3_ a écrit :

reprend aussi un peu d'orthographe et de grammaire alors, sans vouloir être désagréable.


 
Désolée tu l‘es...  :whistle:  

n°1445299
obut76
Posté le 20-09-2006 à 13:57:00  profilanswer
 

oki snprintf c'est bon je ne connaissais pas
 
"Ou alors tu le fais à la main, ça se fait en trois lignes. " --> Tu veux bien préciser?

n°1445302
obut76
Posté le 20-09-2006 à 13:59:51  profilanswer
 

Autant pour moi...

n°1445305
_darkalt3_
Proctopathe
Posté le 20-09-2006 à 14:04:22  profilanswer
 

acryline a écrit :

Désolée tu l‘es...  :whistle:


moins que le gars qui me vole des 1/10ème aux yeux [:itm]

Message cité 1 fois
Message édité par _darkalt3_ le 20-09-2006 à 14:06:03

---------------
Töp of the plöp
n°1445327
acryline
Posté le 20-09-2006 à 14:35:56  profilanswer
 

_darkalt3_ a écrit :

moins que le gars qui me vole des 1/10ème aux yeux [:itm]


 
Pas pigé j'avoue. Mais je ne voulais pas être désagréable.  :)  
Simplement, ce que j'avais envie de dire c'est que obut76 n'est pas venu ici pour s'entendre dire qu'il a besoin de leçons d'orthographe et de grammaire.  Il y a des gens dont le français n'est pas la langue maternelle, il existe aussi des personnes très douées dans certains domaines et moins d'en d'autres. J'avais l'impression d'une remarque purement gratuite et  je rencontre souvent ça dans les forums d'informatique. Donc j'ai craqué, je me suis  exprimée .  :)  
 
A yé j'ai fini. Désolée pour le flood Obut 76 !

Message cité 2 fois
Message édité par acryline le 20-09-2006 à 14:36:51
n°1445339
Emmanuel D​elahaye
C is a sharp tool
Posté le 20-09-2006 à 15:03:02  profilanswer
 

acryline a écrit :


Simplement, ce que j'avais envie de dire c'est que obut76 n'est pas venu ici pour s'entendre dire qu'il a besoin de leçons d'orthographe et de grammaire.  Il y a des gens dont le français n'est pas la langue maternelle, il existe aussi des personnes très douées dans certains domaines et moins d'en d'autres. J'avais l'impression d'une remarque purement gratuite et  je rencontre souvent ça dans les forums d'informatique. Donc j'ai craqué.  


Dans l'absolu, tu as raison, l'orthographe est hors-sujet, mais au bout d'un moment, moi aussi, je craque. Personellement, je suis nul en orthographe, mais je fais des efforts, je me relis, je me corrige... Pareil quand j'écris en anglais, quitte à vérifier au correcteur...
 
Bref, si on veut, on peut. Alors parfois, il est bon de le rappeler, sinon, on finira par ne plus comprendre les questions. (parfois, je dois relire trois fois une phrase écrite en 'phonétique'...' pas que ça à faire...)
 
Et puis si on prétend utiliser un langage informatique, on doit suivre les regles de syntaxe, de grammaire et de sémantique, alors pourquoi pas dans le langage d'expression ? Ce n'est pas si éloigné...


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1445341
_darkalt3_
Proctopathe
Posté le 20-09-2006 à 15:07:21  profilanswer
 

acryline a écrit :

Pas pigé j'avoue. Mais je ne voulais pas être désagréable.  :)  
Simplement, ce que j'avais envie de dire c'est que obut76 n'est pas venu ici pour s'entendre dire qu'il a besoin de leçons d'orthographe et de grammaire.  Il y a des gens dont le français n'est pas la langue maternelle, il existe aussi des personnes très douées dans certains domaines et moins d'en d'autres. J'avais l'impression d'une remarque purement gratuite et  je rencontre souvent ça dans les forums d'informatique. Donc j'ai craqué, je me suis  exprimée .  :)  
 
A yé j'ai fini. Désolée pour le flood Obut 76 !


 
+1 avec Emmanuel.
 
Le but du forum n'est pas de donner des leçons de français, mais bien écrire est une condition nécessaire pour comprendre et être compris.


---------------
Töp of the plöp
n°1445367
acryline
Posté le 20-09-2006 à 15:44:12  profilanswer
 

Je comprends ce que vous voulez dire, mais je ne suis pas convaincue.  
Je sais ce que c'est de lire des textes incompréhensibles. Mais imaginez la personne qui vient ici et qui poste une message tel que :

Citation :


Cad?
suis en train de reprendre mais cours de C, donc quelques lacunes


Déjà il s'excuse de ne pas savoir...
Je suis sûre qu'il voulait faire le mieux du monde et qu'il a fait une grosse faute d'étourderie. Celui qui demande est toujours dans une position un peu inconfortable, il a besoin d' aide et non qu'on  en  rajoute une couche. Je suis peut être sensible mais ça me fait mal à chaque fois.
Et si une remarque est vraiment nécessaire je pense qu'elle peut être faite sans ironie et sans blesser , peut être même avec un peu d'humour  complice en considérant l'autre comme un égal.

Message cité 2 fois
Message édité par acryline le 20-09-2006 à 15:56:52
n°1445374
_darkalt3_
Proctopathe
Posté le 20-09-2006 à 16:01:51  profilanswer
 

acryline a écrit :

Je comprends ce que vous voulez dire, mais je ne suis pas convaincue.  
Je sais ce que c'est de lire des textes incompréhensibles. Mais imaginez la personne qui vient ici et qui poste une message tel que :

Citation :


Cad?
suis en train de reprendre mais cours de C, donc quelques lacunes


Déjà il s'excuse de ne pas savoir...
Je suis sûre qu'il voulait faire le mieux du monde et qu'il a fait une grosse faute d'étourderie. Celui qui demande est toujours dans une position un peu inconfortable, il a besoin d' aide et non qu'on  en  rajoute une couche. Je suis peut être sensible mais ça me fait mal à chaque fois.
Et si une remarque est vraiment nécessaire je pense qu'elle peut être faite sans ironie et sans blesser , peut être même avec un peu d'humour  complice en considérant l'autre comme un égal.


 
C'est mignon, mais faut se mettre aussi à la place du lecteur. Les gens motivés en général se bouge le fion pour écrire mieux. Les autres s'en vont sans dire merci, c'est la vie du forum.
On peut pas dire qu'il y ait eu aggression ou foutage de gueule, juste une remarque (justifiée), ça aurait pu être pire avec d'autres forumeurs.


---------------
Töp of the plöp
n°1445376
acryline
Posté le 20-09-2006 à 16:05:46  profilanswer
 

Effectivement! tu n'as pas été  un monstre je le connais !  :)  
C'est l'ambiance générale des forums d'aide que je remets en question ..pas forcément ta remarque qui
si on y regarde de plus prêt et après avoir lu tes autres réponses, était même plutôt sympa.
 
Y'a rien de personnel en tout cas  !

Message cité 1 fois
Message édité par acryline le 20-09-2006 à 16:07:34
n°1445377
Elmoricq
Modérateur
Posté le 20-09-2006 à 16:08:33  profilanswer
 

Hmm. Dans la phrase citée, il n'y a pas de faute d'orthographe.
Il y a des raccourcis semblables au langage parlé, qui personnellement ne me posent pas de problème, et une faute de grammaire.
 
C'est un peu léger pour une telle réprimande. Même si dans le fond je suis d'accord avec toi, il y a quand même une différence entre ça et ce qu'on peut lire parfois.
 
Bref, un débat bien inutile...

n°1445378
_darkalt3_
Proctopathe
Posté le 20-09-2006 à 16:10:57  profilanswer
 

acryline a écrit :

Effectivement! tu n'as pas été  un monstre je le connais !  :)


 [:vendredi13]  
 

acryline a écrit :

C'est l'ambiance générale des forums d'aide que je remets en question ..


Bah, chaque forum a ses petites habitudes...  
 

acryline a écrit :

pas forcément ta remarque qui si on y regarde de plus prêt et après avoir lu tes autres réponses, était même plutôt sympa.


 [:atsuko]  
 

acryline a écrit :

Y'a rien de personnel en tout cas  !


 [:romf]


---------------
Töp of the plöp
n°1445388
Sve@r
Posté le 20-09-2006 à 16:24:17  profilanswer
 

acryline a écrit :

Je comprends ce que vous voulez dire, mais je ne suis pas convaincue.


 
Ben le problème, c'est que si le gars orthographie mal sa question, il empêche ensuite les recherches sur le même sujet (ou du moins les recherches ne donnent aucun résultat).
Et on risque aussi un jour de se retrouver avec des messages de ce style

Citation :

SaLut! M$ S|_|cKz!  
 komant k'on installe ma GEForce256 . g voulu tout réinstaller mais linux c'est mortel .  
 g une debian et ca marche pas bien... ca doit etre les interruptions ki fé tou déconé  
 Windaub sux! pleaz posté la rep dans alt.2600 because je lis pas ce groupe (je hac le comt de la fac).


Bon, j'exagère évidemment mais le fait est qu'on apprécie quand-même les gens qui font des efforts du coté de l'écriture et ne pas avoir à relire 6 fois la phrase pour la comprendre...
 

acryline a écrit :

Et si une remarque est vraiment nécessaire je pense qu'elle peut être faite sans ironie et sans blesser , peut être même avec un peu d'humour  complice en considérant l'autre comme un égal.


+1


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Petit soucis avec strcat

 

Sujets relatifs
[MySQL/PHP] Petit soucis de renommage de fichiers proposés en downloadpetit souci en C++
[.Net] Soucis assembly lors d'une migration[CSS] Soucis d'affichage sous IE
Soucis : Plusieurs CHECKBOX ..COMMENT FAIRE? pour renvoyer valeur diffPetit problème d'ordre numérique pour classement de fichiers
petit problème avec les pointeursrealloc d'un tableau plus petit
résolu [API win32] probleme avec un petit exercice 
Plus de sujets relatifs à : Petit soucis avec strcat


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR