2010-02-12 3 views
0

Ok les gars, je suis très débutant et j'essaie d'entrer une chaîne dans un tableau char en utilisant des pointeurs ... et ensuite afficher ce que j'ai écrit.Saisie d'une chaîne de caractères à l'aide de tableaux et de pointeurs

Il y a deux choses que je veux poser à propos de. Tout d'abord, si je ne voulais pas spécifier une taille pour le tableau et que je voulais juste l'agrandir pour contenir toute la chaîne que j'ai entrée, comment est-ce? Et deuxième après que j'entre la chaîne et l'affiche ... il ne contiendra pas l'ESPACE entre le mot ... comme si je suis entré "j'aime les cookies" ... il sera affiché comme "ilovecookies" .. Alors comment résoudre cela?

Voici mon petit code ...

#include <iostream> 

using namespace std; 

int main() 
{ 

    char *strP , str[100] ; 
    strP = str ; 

    for(int i =0 ; i<10 ; i++) cin >> *(strP+i) ; 

    for(int i =0 ; i<10 ; i++) cout << *(strP+i) ; 


    return 0; 
} 

désolé pour mes questions idiotes, je suis débutant à cette langue que dit et ne veulent pas manquer les choses avant de passer.

Merci d'avance.

Répondre

1

1) Vous devez utiliser un objet chaîne ou new si vous souhaitez redimensionner dynamiquement votre chaîne.

2) Il ne contient pas les espaces car cin lit un mot à la fois. Il y a plusieurs façons de contourner cela. Celui que j'utiliserais passerait à utiliser scanf et printf au lieu de cin et cout. Ou, comme le dit Vivin, vous pouvez utiliser getchar()

EDIT: grammaire

+0

Utilisez getline pour gérer les entrées avec des espaces. N'utilisez pas scanf et printf sauf si vous avez une meilleure raison; ils utilisent varargs donc le compilateur ne peut pas attraper les erreurs de type pour vous, et ils sont une source de bugs de débordement de tampon. –

1

cin s'arrête toujours lorsqu'il rencontre un espace. Si vous entrez un caractère par caractère, essayez d'utiliser getchar().

1

Les tableaux ne peuvent pas changer leur taille. Vous devriez utiliser std::vector<char>, ou même mieux pour les chaînes que vous utiliseriez std::string.

Questions connexes