Informatică, întrebare adresată de paulb007, 8 ani în urmă

# include < iostream >
#include < cstring >
using namespace std;

int main()
{ char b='p', a[5] ;
strcpy(a,b);
cout << a;
return 0;
}

Ce trebuie sa fac, unde e greseala ca sa imi mearga programul?
La build log apare: invalid conversion from char to const char *, aveti o idee cum ce inseamna asta??

Răspunsuri la întrebare

Răspuns de CinevaFaraNume
0

Răspuns:

Al doilea parametru este un vector

Explicație:

Functia strcpy are urmatorul antet:

char * strcpy ( char * destination, const char * source );

source trebuie sa fie un VECTOR de caractere(foarte important: terminat cu '\0').

In programul tau, source este doar un caracter.

Poti sa incerci sa il apelezi asa:

strcpy(a, &b);

Dar trebuie sa te asiguri ca (&b)[1] = '\0'


paulb007: Aa, deci ambii din functia strcpy trebuie sa fie vectori? Gen si destination, nu numai source, nu?
paulb007: Si am incercat cum ai zis tu cu &b, si mi-a afisat 'p2' ce inseamna asta? in loc de 'p', 'p2', de unde stiu daca (&b)[1] = '\0'?
CinevaFaraNume: Incearca sa il declari pe b asa:
char * b = "p";
Te scapa de toate problemele pe care le ai in programul tau.
paulb007: merge programul, multumesc, insa din pacate n-am ajuns inca la pointeri, o sa-mi dau seama atunci, ca e ciudat ca ai pus " " la 1 caracter :D
CinevaFaraNume: " " inseamna ca trebuie tratat ca un sir.
' ' inseamna ca trebuie tratat ca un singur caracter.
Diferenta dintre ele e de tip:
Cu " ", tipul este const char *
Cu ' ', tipul este const char
Dar poti sa incerci sa il declari pe b si asa:
char b[] = {'p', '\0'};
paulb007: AM inteles, mersi!
paulb007: daca pun char a[4][5] ={"tata","bac","nata"}; dc imi apare 0x6... adica adresa acestui sir? tot asa si daca pun '\0' la capatull lor, ca gen asta e vector de siruri
CinevaFaraNume: Atunci a e un pointer la pointer. Afisarea oricarui pointer in C++(in afara de char*) afiseaza adresa in hexadecimala
paulb007: mersi!!
Alte întrebări interesante