Ma fct sur les tableaux en C ne marche pas

Fermé
sophie34 - 26 nov. 2009 à 01:19
Yuku Messages postés 199 Date d'inscription samedi 22 mars 2008 Statut Membre Dernière intervention 22 mars 2012 - 26 nov. 2009 à 08:56
Bonjour,
je souhaite créer une fonction de saisie en c qui prend comme paramètre un string (un tableau de char) et renvoit un autre tableau de string (un autre tableau de char) mais à la compilation, j'ai toujours la même erreur:
expected unqualified-id before '[' token
expected ';'or ',' before '[' token


char[]    lireString(char mes[]){
	cin>>mes;
	return mes;
}


avec dans le corps du main un code du genre:
int main(){
int taille =5;
char tab[taille];
tab=lireString("tapez un mot au hasard svp:\n");
cout<<tab;
}


merci pour votre aide :)

8 réponses

topcoder Messages postés 81 Date d'inscription mercredi 25 novembre 2009 Statut Membre Dernière intervention 14 décembre 2012 10
26 nov. 2009 à 02:04
Voici ma fonction pour la lecture d un caractere

#include<stdio.h>
#include<conio.h>
char lireChar(char c){
scanf("%c",&c);
return c;
}
int main(){
char c_;
c_=lireChar('n');
printf("%c",c_);
getch();
return 0;
}
0
merci pour ta réponse topcoder :)

ce n'est pas les caractères qui me posent problème mais les chaînes de caractères....
0
topcoder Messages postés 81 Date d'inscription mercredi 25 novembre 2009 Statut Membre Dernière intervention 14 décembre 2012 10
26 nov. 2009 à 03:17
je ponse que l utilisation des pointeurs va résoudre le probléme
car la définition de la fonction sous la forme char []lireString(char mes[]) est impossible pratiquement en dépit qu ellle logique théoriquement
0
ah d'accord, c'est donc à bannir.....
le soucis, c'est que ne comprend rien au pointeurs
arf, je suis dans la mouise :'(
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
topcoder Messages postés 81 Date d'inscription mercredi 25 novembre 2009 Statut Membre Dernière intervention 14 décembre 2012 10
26 nov. 2009 à 03:47
Voici ma proposition en utilisant les pointeurs mais je trouve encors un beug

#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
char *lireString(char mes[20]){
printf("%s",mes);
scanf("%s",mes);
return mes;
}
int main(){
char *tab=(char*)maloc(sizeof(char));
tab=lireString("Saisir une chaine :\n");
printf("%s",tab);
return 0;
}
0
merci pour ton aide :)

je lirais le code demain à la première heure

bonne nuit à toi :)
0
topcoder Messages postés 81 Date d'inscription mercredi 25 novembre 2009 Statut Membre Dernière intervention 14 décembre 2012 10
26 nov. 2009 à 03:58
bonne chance
0
topcoder Messages postés 81 Date d'inscription mercredi 25 novembre 2009 Statut Membre Dernière intervention 14 décembre 2012 10
26 nov. 2009 à 04:52
En fin j ai la trouvé :

#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#include<conio.h>
char *lireString(char mes[20]){
printf("%s",mes);
mes=NULL;
mes=(char*)malloc(20*sizeof(char));
scanf("%s",mes);
return mes;
}
int main(){
char *tab=(char*)malloc(20*sizeof(char));
tab=NULL;
tab=lireString("Saisir une chaine :\n");
printf("%s",tab);
getch();
return 0;
}
0
Yuku Messages postés 199 Date d'inscription samedi 22 mars 2008 Statut Membre Dernière intervention 22 mars 2012 4
26 nov. 2009 à 08:56
Juste un truc au passage : topcoder t'a corrigé sans te le dire, mais sache qu'en C tu n'as pas les fonctions CIN et COUT, ni les opérateurs de flux : << et >>, qui sont présents en C++.

En C, c'est printf et scanf.

Sinon c'est effectivement un problème de pointeurs.
0