J'essayais d'imprimer le contenu d'un tableau de caractères dans la fonction principale en acceptant l'adresse de base de ce tableau dans un pointeur de caractère qui est renvoyé par une autre fonction. En fait ici le code est d'accepter une chaîne avec des voyelles et de retourner la chaîne modifiée sans voyelles. Mais lorsque j'imprime le tableau de caractères dans la fonction principale, le code n'imprime rien. Il est possible de faire avec une classe de chaînes mais je veux savoir quel est le problème lors de l'utilisation de pointeurs de caractères.Comment imprimer le contenu d'un tableau de caractères dans la fonction principale dont l'adresse de base est renvoyée par une fonction via un pointeur de caractère?
#include<iostream>
#include<string.h>
using namespace std;
char * print(char * s)
{
int j=0,len;
while(s[j]!='\0')
j++;
len=j;
char scopy[len];
char * sn;
j=0;
for(int i=0;i<len;i++)
{
if(s[i]!='a' && s[i]!='e' && s[i]!='i' && s[i]!='o' && s[i]!='u' && s[i]!='A' && s[i]!='E' && s[i]!='I' && s[i]!='O' && s[i]!='U')
{
scopy[j]=s[i];
j++;
}
}
sn=scopy;
return sn;
}
int main()
{
int n;
cout<<"enter n:\n";
cin>>n;
char st[n];
cout<<"enter string:\n";
cin>>st;
char * ps=print(st);
cout<<"the string is\n"<<ps[0]<<ps[1]<<ps[2]<<"\n"; //Here when i print the array contents individually using the base pointer, it prints successfully
for(int i=0;ps[i]!=NULL;i++) //the problem is here, it does not print anything
cout<<ps[i];
}
Vous avez deux problèmes: Le premier est que vous ne terminez pas la chaîne. La seconde est que vous renvoyez un pointeur vers un tableau local qui sortira de sa portée et disparaîtra immédiatement si vous faites 'return'. –
Vous devriez vraiment utiliser 'std :: string' ici. Beaucoup plus facile à utiliser, et évite toutes les difficultés que vous rencontrez. –