Una cosa apparentemente banale come concatenare stringhe, può non essere semplicissima in linguaggio C.
Un esempio di come NON si dovrebbe fare, è questo:
char frase[200] = "parola1 ";
strcat(strcat(frase, "parola2")," parola3");
g_print ("La frase è : %s\n", frase);
#include <gtk/gtk.h>
[...]
//g_strconcat: serve ad unire piu stringhe. Ricordarsi il NULL alla fine!
gchar *stringa = g_strconcat("parola1", " parola2"," parola3", NULL);
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#include <string.h>
char *SuperStringsCat (char *String1, ...)
{
va_list List;
va_start (List, String1);
unsigned int Size;
Size = strlen (String1) + 1;
char *s;
s = String1;
do
{
Size += strlen (s) + 1;
}while ((s = va_arg (List, char*)) != NULL);
char *Merge;
Merge = (char*)malloc (sizeof (char) * Size);
char *sMerge = Merge;
va_end (List);
va_start (List, String1);
s = String1;
do
{
strcpy (Merge, s);
Merge += strlen (s);
}while ((s = va_arg (List, char*)) != NULL);
va_end (List);
return sMerge;
}
int main (int argc, char *argv[])
{
char *p;
p = SuperStringsCat ("prova", " 1,", " 2,", " 3", "...", NULL);
printf ("%s\n", p);
return 0;
}
Mmm....Ciao Tony benvenuto...
Ho appena fatto copia e incolla dell'ultimo programmino in un file di testo, l'ho chiamato "new.c"... Ho ricompilato il tutto facendo:
gcc -Wall -g new.c -o new
Ciao ho provato a compilare la versione più lunga del programma, ma mi dice che non riesce a fare il run perchè il programma termina cn 0 ..... avete qualche idea?? io uso visual studio 2005 espress ....l'ultimo insomma della microsoft... se mi aiutate mi fate un favorone mi serve per scuola ^^ grazie!!!