[C/C++] - Concatenar um valor int em uma String [Resolvido]

Oi,

Estou começando a desenvolver um programa na linguagem C.
Já fiz varias e varias coisas legais (socket, funcoes, dlls etc…) e agora estou precisando fazer um controle seqüencial utilizando uma variável do tipo int.

Ex:

char *buffer = "quantidade=\"1\"";

Preciso utilizar uma variável int para incrementa-la futuramente:

int ln_qnt = 1; char *buffer = "quantidade="+ln_qnt+"";

Como fazer?

Eu sei, é uma dúvida simples! O problema é que sou Javeira! rs

Tchauzin!

Oi lina,

Legal, linguagem c sempre é uma boa de estudar.

A função itoa faz isso para você.
Os parâmetros são:
inteiro, vetor de chars, base

[code]#include <QtCore/QCoreApplication>
#include <stdio.h>
#include <stdlib.h>

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

char buffer[100];

int i=1;

itoa(i,buffer,10);//aqui para converter apenas o inteiro em string
int n = sprintf(buffer,"%s%d",buffer,i); // para formatar as strings ou concatenar valores, onde %s(string) %(d) inteiro na base 10
return a.exec();

}
[/code]

Em C normalmente é melhor você usar sprintf (ou seu amigo mais seguro, snprintf ) para fazer esse tipo de conversão. Por exemplo:

char szBuffer[1024];
snprintf (szBuffer, sizeof (szBuffer), "quantidade = %d", ln_qnt);

Oi,

O problema é que meu buffer tem mais informações:

char *buffer = "servico=\"teste\"\ncor=\"vermelha\"\nquantidade=\"1\"\nfinalizador=\"9\"";

Só queria fazer essa concatenação na “tag” quantidade.

Tchauzin!

Então lina, só precisa alocar mais memória no buffer,

acho que a quantidade do post do entanglement deve ser suficiente

char szBuffer[1024]; 

Como estamos falando de c, se for gerenciar memória dinamicamente você deve usar malloc para incrementar ou decrementar a capacidade do buffer

Ou se quiser usar c++ pode usar a chave “new” como em java mesmo.

Oi,

Deu certo… mudei o tipo da variável ficando:

[code]char buffer[1024]; // estava char *buffer
int ln_qnt = 1;

snprintf (buffer, sizeof(buffer), “servico=“teste”\ncor=“vermelha”\nfinalizador=“9”\nquantidade = %d”, ln_qnt);

printf("%s", buffer);[/code]

Tchauzin!

[quote=lina]Oi,

O problema é que meu buffer tem mais informações:

char *buffer = "servico=\"teste\"\ncor=\"vermelha\"\nquantidade=\"1\"\nfinalizador=\"9\"";

Só queria fazer essa concatenação na “tag” quantidade.

Tchauzin![/quote]

legal

[quote=juliocbq][quote=lina]Oi,

O problema é que meu buffer tem mais informações:

char *buffer = "servico=\"teste\"\ncor=\"vermelha\"\nquantidade=\"1\"\nfinalizador=\"9\"";

Só queria fazer essa concatenação na “tag” quantidade.

Tchauzin![/quote]

legal[/quote]

Oi,

Muito obrigado! Acredito que o itoa funcionaria também!
A idéia de criar um “ponteiro” não foi muito boa. rs

Tchauzin!

[quote=lina][quote=juliocbq][quote=lina]Oi,

O problema é que meu buffer tem mais informações:

char *buffer = "servico=\"teste\"\ncor=\"vermelha\"\nquantidade=\"1\"\nfinalizador=\"9\"";

Só queria fazer essa concatenação na “tag” quantidade.

Tchauzin![/quote]

legal[/quote]

Oi,

Muito obrigado! Acredito que o itoa funcionaria também!
A idéia de criar um “ponteiro” não foi muito boa. rs

Tchauzin![/quote]

postei o caso do itoa ou o contrario “atoi” para quando você precisar converter entre os dois dados.
No caso do ponteiro não existe problema nenhum em utilizá-lo, só se certifique que eles tenham “conteúdo”, ou seu programa vai quebrar.

Gostei desta observacao:
itoa() is a non-standard extension, and not guaranteed to be available for all platforms

Pessoalmente sempre usei sprintf.

[quote=peczenyj]http://stackoverflow.com/questions/191757/c-concatenate-string-and-int

Gostei desta observacao:
itoa() is a non-standard extension, and not guaranteed to be available for all platforms

Pessoalmente sempre usei sprintf.[/quote]

Sim. Essa função não é nem mesmo ansi c. Foi criada para atender alguns programadores c++.

http://www.cplusplus.com/reference/clibrary/cstdlib/itoa/