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

10 respostas
L

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!

10 Respostas

J

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

#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();
}
E

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

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!

J

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.

L

Oi,

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

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

Tchauzin!

J

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!

legal

L

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

legal

Oi,

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

Tchauzin!

J

lina:
juliocbq:
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!

legal

Oi,

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

Tchauzin!

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.

P

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

Pessoalmente sempre usei sprintf.

J

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.

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/

Criado 25 de outubro de 2010
Ultima resposta 25 de out. de 2010
Respostas 10
Participantes 4