Etnablog.altervista.org :)

Visitatore: 1311410
Welcome ospite
Menu di accessibilità:
Dimensione carattere:

Home > Programmazione C > Programmazione C: La concatenazione di stringhe
Contenuto della pagina:
13 Giugno 2007

Programmazione C: La concatenazione di stringhe

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);


Un ottimo metodo è questo, è nelle gtk:


#include <gtk/gtk.h>

[...]


//g_strconcat: serve ad unire piu stringhe. Ricordarsi il NULL alla fine!
gchar *stringa = g_strconcat("parola1", " parola2"," parola3", NULL);


Un altro ottimo sistema è questo (sorgente completo):


#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;
}


N.B. : Per l'ultimo metodo ringrazio l'utente "uno" del forum di Ubuntu.

Descrizioni usate nelle foto: 
Postato da: Etnablog in Programmazione C alle 0:22

Permalink | Commenti(2)
Inserisci commento

Commenti:

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!!!

 

Postato da: Tony il 02 Novembre 2007 alle 17:53

Avatar

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

Mi funziona perfettamente, nemmeno un warning e viene anche eseguito regolarmente.. mmm.. prova a modificare il return 0 visto che non gli piace :/

 

Postato da: Etnablog il 02 Novembre 2007 alle 18:09

Solo gli utenti registrati possono lasciare commenti
*1 user online
Caricamento pagina: 0.02 s