Petit soucis avec strcat - C - Programmation
Marsh Posté le 20-09-2006 à 13:35:27
ReplyMarsh Posté le 20-09-2006 à 13:38:15
ok: je remplace et met:
char *ligne;
et j'obtiens la meme erreur de compilation...je suis sur que cela est trop con
Marsh Posté le 20-09-2006 à 13:41:22
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)/
Marsh Posté le 20-09-2006 à 13:46:35
alors pourquoi utilises tu strcat ?
t'as lu ce que cela prenait en argument et le résultat de cette fonction ?
Marsh Posté le 20-09-2006 à 13:48:05
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?
Marsh Posté le 20-09-2006 à 13:49:04
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...
Marsh Posté le 20-09-2006 à 13:49:58
ReplyMarsh Posté le 20-09-2006 à 13:50:10
obut76 a écrit : oui 1 *char |
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.
Marsh Posté le 20-09-2006 à 13:50:55
obut76 a écrit : Cad? |
reprend aussi un peu d'orthographe et de grammaire alors, sans vouloir être désagréable.
Marsh Posté le 20-09-2006 à 13:51:15
Si c'est juste un caractère, utilises snprintf()
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); |
obut76 a écrit : Cad? |
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.
Marsh Posté le 20-09-2006 à 13:55:01
obut76 a écrit : Cad? |
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 :
|
EDIT: Grilled
Marsh Posté le 20-09-2006 à 13:55:30
_darkalt3_ a écrit : reprend aussi un peu d'orthographe et de grammaire alors, sans vouloir être désagréable. |
Désolée tu les...
Marsh Posté le 20-09-2006 à 13:57:00
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?
Marsh Posté le 20-09-2006 à 14:04:22
acryline a écrit : Désolée tu les... |
moins que le gars qui me vole des 1/10ème aux yeux
Marsh Posté le 20-09-2006 à 14:35:56
_darkalt3_ a écrit : moins que le gars qui me vole des 1/10ème aux yeux |
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 !
Marsh Posté le 20-09-2006 à 15:03:02
acryline a écrit : |
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é...
Marsh Posté le 20-09-2006 à 15:07:21
acryline a écrit : Pas pigé j'avoue. Mais je ne voulais pas être désagréable. |
+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.
Marsh Posté le 20-09-2006 à 15:44:12
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 : |
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.
Marsh Posté le 20-09-2006 à 16:01:51
acryline a écrit : Je comprends ce que vous voulez dire, mais je ne suis pas convaincue.
|
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.
Marsh Posté le 20-09-2006 à 16:05:46
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 !
Marsh Posté le 20-09-2006 à 16:08:33
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...
Marsh Posté le 20-09-2006 à 16:10:57
acryline a écrit : Effectivement! tu n'as pas été un monstre je le connais ! |
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. |
acryline a écrit : Y'a rien de personnel en tout cas ! |
Marsh Posté le 20-09-2006 à 16:24:17
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! |
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
Marsh Posté le 20-09-2006 à 13:32:24
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...