Concatenar unas cositas (ayuda)

Hola, estoy programando en c, con las palib...

Quiero concatenar:

palabra3="palabra1" + numero + "palabra2"


he intentado varias cosas, pero no me ha salido ninguna... si alguien tiene sugerencias...

gracais.
Solucion rapida con char

char buffer[50];
char numBuffer[10];

strcpy(buffer,"palabra1");
itoa ( numero, numBuffer, 10 );
strcat(buffer, numBuffer);
strcat(buffer, "palabra2");

Y te queda que buffer = palabra3
hay otra forma de pasar un entero a caracter?

es que el ITOA me da error...

lo he montado asi:
char numeroletra[3];
char sprite[10]

strcat(sprite,"c");

//itoa(i,numeroletra,10);
sprintf(numeroletra, "%d", 1);
strcat(sprite,numeroletra);

strcat(sprite,"_Sprite");
PA_OutputText(1,4,4,"%s",sprite);

me compila , lo ejecuto y me funciona, pero me reporta todos estos warnings que me gustari hacer desaparecer...

c:/devkitPro/PROGRAMAS/MiniGothick/source/main.c: In function 'main':
c:/devkitPro/PROGRAMAS/MiniGothick/source/main.c:122: warning: implicit declarat
ion of function 'sprintf'
c:/devkitPro/PROGRAMAS/MiniGothick/source/main.c:122: warning: incompatible impl
icit declaration of built-in function 'sprintf'




-------------------------------


Esto tampoco me funciona, supongoq ue es por lo de (void*)nombre
alguien sabe como se lo tendria que pasar?

strcat(nombre,"c1_Sprite");
PA_DualCreateSprite(num_sp,(void*)nombre,OBJ_SIZE_32X64,1,0,x,y); //x,y ultimas
Es cierto lo del itoa, me sonaba que daba problemas pero no me acordaba. Yo también uso sprintf.

Sobre los warning pues no se, a mi no me salen

PD: acabo de ver el código de palib y lo de nombre tiene que ser por lo visto el nombre del array con los datos. Asi que no puedes pasar una cadena de texto.
no entiendo muy bien lo del nombre del array con los datos....

lo que yo queria era en lugar de pasarle el (void*)dibujo1_sprite

crearme yo la cadena "dibujo1_sprite" y sustituirla a la hora de llamar esa funcion, ¿no es posible?


PD: gracias por tu ayuda ;)
Es que el dato que te pide es el array con los datos. Y tu no puedes pasar un array como una cadena de texto.

Me explico:

Palib interiormente usa probablemente un u16 nombre[x];.Asi que lo que pasas es la referencia al array, no un nombre al array.
al final, lo he resuelto a lo "burro" y ya esta... ni warnings ni nada, un switch de 100 casos y ya esta.... tarda un poco en compilar....



switch(cadena2[num_sp])
{
case 1:{PA_DualCreateSprite(num_sp,(char*)c2_Sprite,OBJ_SIZE_32X64,1,0,x,y); break;}
case 2:{PA_DualCreateSprite(num_sp,(char*)c3_Sprite,OBJ_SIZE_32X64,1,0,x,y); break;}
case 3:{PA_DualCreateSprite(num_sp,(char*)c4_Sprite,OBJ_SIZE_32X64,1,0,x,y); break;}
case 4:{PA_DualCreateSprite(num_sp,(char*)c5_Sprite,O
Ese es el problema que tienes por tenerlo en arrays en un .h. Si directamente los abrireras tu (ya sea en su propio formato o convertido a raw) podrías acceder por nombre e incluso crear estructuras propias para sprites animados mediante ficheros.

Está bien que te aproveches de la sencillez y funcionalidad de palib, pero es bueno que vayas un poco más allá y por ejemplo no uses esa aberración (en la mayoría de los casos) para proyectos un poco serios que es poner los datos como cabeceras y compilados con el código.
ok, gracias.

tutoriales de PA_li hay muchos pero sabes alguno bueno de Ndslib? que sea por capitulos o algo parecido... para no pillar uno dificil desde el principio.

gracias.
Realmente de libnds está todo desperdigado. Y de cargar ficheros no hay mucho en ningú sitio. El mejor punto de partida es mirar los links de tutoriales de gba y ds en drunkencoders.com. De todos modos tras ver con alegría que el FAQ de DS que hice aqui no lo han borrado (lo tenía por desaparecido), si te interesa por ejemplo algún tema en concreto le puedo dar prioridad (ahora que veo que sigue por ahí lo continuaré en cuanto tenga un rato). Igual ya lo viste en su momento

http://www.elotrolado.net/showthread.php?s=&threadid=524148

Es realmente para saber un poco por donde empezar. Eso si todo lo que ponga en él será genérico y a nivel de código será con libnds

PD: A todo el que lo lea: LIBNDS no NDSLIB.
Ese número es un entero?

Si es así, podrias ir pillando cifra a cifra, convertirlas a ASCII e ir concatenandolas una tras otra en la cadena final.

Lo de ir cogiendo una cifra tras otra no es más que hacer modulos del número: num%10 para la primera, num%100 para la segunda, etc.

Prueba a ver, si tienes alguna duda, comentalo.
Si utilizas C++ , lo mas facil es que utilices la clase String

ejemplo aqui

Si utilizas C, puedes utilizar la clase de strings de C y te ayudará a concatenar 2 strings (el número tendrás que convertirlo a string)

ejemplo
aqui
11 respuestas