[C] Concatenare il contenuto di due token in uno solo

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Avatar utente
kiroken_
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 2008
Iscrizione: mercoledì 2 maggio 2007, 17:38

[C] Concatenare il contenuto di due token in uno solo

Messaggio da kiroken_ »

Ciao ho questi due token

Codice: Seleziona tutto

#define PIPPO "./pippo/"
#define PLUTO "file1"
vorrei unirli in un unico token UNO che contenga il valore "./pippo/file1" dai miei appunti ho trovato che per trasformare un token in stringa occorre usare # però quando ho provato a fare

Codice: Seleziona tutto

#define UNO #PIPPO#PLUTO
ottengo

Codice: Seleziona tutto

dserver.c:109: error: stray ‘#’ in program
dserver.c:109: error: stray ‘#’ in program
sapete come fare?

grazie
Ultima modifica di kiroken_ il martedì 8 luglio 2008, 11:02, modificato 1 volta in totale.
http://petition.stopsoftwarepatents.eu/
d95555c36aeeee715c0a34ce1e4dd713
Avatar utente
moretto11
Prode Principiante
Messaggi: 217
Iscrizione: venerdì 20 aprile 2007, 16:33
Contatti:

Re: [C] Concatenare il contenuto di due token in uno solo

Messaggio da moretto11 »

non so se sia una cosa che può fare il preprocessore..io l'ho risolta così:

Codice: Seleziona tutto

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define PIPPO "./pippo/"
#define PLUTO "file1"

int main(){
    char *uno;
    uno=(char *)malloc(sizeof(char)*(strlen(PIPPO)+strlen(PLUTO)+1));
    strcpy(uno,PIPPO);
    strcat(uno,PLUTO);
    printf("%s \n",uno);
    free(uno);
    return 0;
}
Avatar utente
kiroken_
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 2008
Iscrizione: mercoledì 2 maggio 2007, 17:38

Re: [C] Concatenare il contenuto di due token in uno solo

Messaggio da kiroken_ »

sisi ho fatto pure io così come misura temporanea ma mi sembra che il mio prof aveva detto come fare a concatenare il contenuto di due token in uno solo ma ora che ci penso non posso farlo per via delle " che racchiudono i path. Difatti anche se riesco a capire come unirli otterrei cmq una cosa del tipo "./pippo/""file". Ovviamente non posso modificare il contenuto di PIPPO E PLUTO perchè sono in un file che nel progetto non posso modificare. Vabbeh per il progetto ormai lascio con strcpy e strcat però ero curioso di sapere come fare in ogni caso.
http://petition.stopsoftwarepatents.eu/
d95555c36aeeee715c0a34ce1e4dd713
Avatar utente
jack84
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 493
Iscrizione: lunedì 12 febbraio 2007, 11:13

Re: [C] Concatenare il contenuto di due token in uno solo

Messaggio da jack84 »

Non so proprio se il preprocessore sia in grado di concatenare costanti, comunque visto che sono costanti non ti conviene creare direttamente un'altra costante in cui c'è direttamente il contenuto concatenato?
Non sempre si può prevedere, ma ci si può sempre preparare
Avatar utente
kiroken_
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 2008
Iscrizione: mercoledì 2 maggio 2007, 17:38

Re: [C] Concatenare il contenuto di due token in uno solo

Messaggio da kiroken_ »

era per non cambiarla ogni volta :P
http://petition.stopsoftwarepatents.eu/
d95555c36aeeee715c0a34ce1e4dd713
Ikitt
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1816
Iscrizione: mercoledì 24 ottobre 2007, 12:05

Re: [C] Concatenare il contenuto di due token in uno solo

Messaggio da Ikitt »

kiroken ha scritto: Ciao ho questi due token

Codice: Seleziona tutto

#define PIPPO "./pippo/"
#define PLUTO "file1"
vorrei unirli in un unico token UNO che contenga il valore "./pippo/file1" dai miei appunti ho trovato che per trasformare un token in stringa occorre usare # però quando ho provato a fare

Codice: Seleziona tutto

#define UNO #PIPPO#PLUTO
ottengo

Codice: Seleziona tutto

dserver.c:109: error: stray ‘#’ in program
dserver.c:109: error: stray ‘#’ in program
sapete come fare?
Limitatamente a costanti stringa si puo` aggirare l'ostacolo (la soluzione esatta or non mi sovviene)

Codice: Seleziona tutto

#include <stdio.h>

#define PIPPO "./pippo/"
#define PLUTO "file1"

#define UNO PIPPO""PLUTO

int main()
{
        puts(UNO);
        return 0;
}
Avatar utente
kiroken_
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 2008
Iscrizione: mercoledì 2 maggio 2007, 17:38

Re: [C] Concatenare il contenuto di due token in uno solo

Messaggio da kiroken_ »

grazie mille posso usare anche questa come soluzione però ormai sono curioso di sapere quella esatta
http://petition.stopsoftwarepatents.eu/
d95555c36aeeee715c0a34ce1e4dd713
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 3 ospiti