PDA

View Full Version : [C/C++] Come copiare argv[1]? Senza usare const char *?


shang84
14-11-2005, 13:26
Ciao,

dato il seguente main


using namespace std;
#include <iostream>

int main(int argc, char *argv[]){

}


Come posso creare una 2 copie di argv[1] e quindi su una concatenarvi "_ciao" e sull'altra concatenarvi "_hello"?

Grazie

cionci
14-11-2005, 14:51
char *uno;
char *due;

uno = (char *)malloc(strlen(argv[1]) + strlen("_ciao") + 1);
due = (char *)malloc(strlen(argv[1]) + strlen("_hello") + 1);

sprintf(uno, "%s_ciao", argv[1]);
sprintf(uno, "%s_hello", argv[1]);

shang84
14-11-2005, 23:04
Thnks!

ri
15-11-2005, 07:56
e ricordati le free..

shang84
15-11-2005, 14:41
è vero hai ragione... :)

cionci
15-11-2005, 17:37
Azz...ho capito ora che andava bene anche in C++:

string uno(argv[1]);
string due(argv[2]);

uno.append("_ciao");
due.append("_hrllo");

Quando ti serve un char * dalla classe string usa il metodo c_str()...

shang84
15-11-2005, 17:43
si ma mi ritorna un riferimento a const char * se nn sbaglio.. che poi non riesco a modificare...

cionci
15-11-2005, 17:48
si ma mi ritorna un riferimento a const char * se nn sbaglio.. che poi non riesco a modificare...
Infatti non lo devi modificare... Se lo dovessi modificare lo manipoli in string...

shang84
15-11-2005, 20:50
ricevuto! :)