Newsgroup: it.comp.lang.c++
Titolo: array di char senza usare la lib. string

Ho questo piccolo programmino:
#include <iostream>
using namespace std;
char returnp();
int main()
{
	cout << "TEST è:\n";
	returnp();
	return 0;
}
char returnp()
{
	char mydate[] = "prova";
	cout << mydate << '\n';
	return mydate;
}
mi da errore propio nella funzione . . .
praticamente non vorrei usare la lib string, e vorrei ottenere appunto
quel risultato ma non ci riesco . . . qualche aiutino ?
thx

praticamente non vorrei usare la lib string
Perché mai?

Dal momento che ritorni una stringa costante potresti anche scrivere:
char* returnp()
{
    return "prova";
}

 thx
Il tuo invece è proprio uno di quei casi dove l'uso della libreria 
standard è consigliatissimo.

 }
Qui hai un problema fondamentale: stai cercando di restituire mydate, che è
un array, passandolo come char*. Oltretutto, visto che char mydate[]
sparirà alla fine della funzione, anche se la funzione restituisse un char*
avresti come output un indirizzo che puoi ancora leggere, ma che potrebbe
non contenere più i dati che ci hai messo. A volte potrebbe funzionare, a
volte no, in maniera imprevedibile.
Sient'ammè: una std::string, e rifuggi le stringhe C a tutti i costi.
#include <iostream>
#include <string>
std::string returnString()
{
        std::string mydate( "prova" );
        return mydate;
}
int main()
{
        std::cout << "TEST è:\n" << returnString() << std::endl;
        return 0;
}

un array, passandolo come char*.
Il problema fondamentale non č questo (il nome dell'array decade
tranquillamente a puntatore al primo elemento). Il problema
fondamentale č che il contenuto dell'array č temporaneo.

 fondamentale è che il contenuto dell'array è temporaneo.
Scusa, lapsus keyboardii... volevo dire «passandolo come char», senza
asterisco.

 non vorrei usare la lib string
se quello che devi fare č veramente banale e poco complesso allora puoi 
anche usare solo puntatori e new\delete a manina e gestirti tutto a mano, 
altrimenti, se proprio non vuoi avere dipendenze dalla stdlib, ti 
conviene seriamente implementarti tu una piccola e semplice classe per 
gestirti le stringhe. se non sai da dove cominciare cerca un po in giro, 
la classe string č uno degli esercizi sempreverdi di qualsiasi buon (ma 
anche pessimo) manuale di c++. in giro trovi molto...

gestirti le stringhe.
Non sono assolutamente d'accordo. Non "conviene" e tantomeno
"seriamente". Bisognerebbe sforzarsi di superare i pregiudizi nei
confronti del codice scritto da altri, tanto piů quando sono i
progettisti della libreria standard di un linguaggio...

 progettisti della libreria standard di un linguaggio...
In ambito lavorativo ti darei completamente ragione, per il solito buon 
motivo del non reiventare la ruota e magari farla quadrata. Ma in altri 
frangenti non vedo perche non debbano esistere pregiudizi che possono 
anche essere necessità. E' uno studentello alle prime armi con la 
programmazione, ben venga che sbatta il muso contro puntatori e 
compagnia, gli farà solo del bene. Magari è anche uno studente gia a buon 
punto, e vuole cimentarsi davvero nella reinvenzione della ruota a fini 
propedeutici. O meno scolasticamente, ha la necessità di NON avere 
dipendenze dalla stdlib per i suoi, e solo suoi, buoni motivi.

dipendenze dalla stdlib per i suoi, e solo suoi, buoni motivi.
Chiaro che bisogna conoscere le esigenze specifiche, ma non puoi non
avere dipendenze dalla libreria standard, a meno di non implementarti
a mano tutta le gestione della memoria, cosa che dubito l'OP abbia
bisogno di o voglia fare.