Concatenar String e Int en C
-
Utilice las funciones
asprintf
,strcat
ystrcpy
para concatenar cadenas e int en C -
Utilice las funciones
asprintf
ymemccpy
para concatenar cadenas e int en C
Este artículo demostrará varios métodos para concatenar string
e int
en C.
Utilice las funciones asprintf
, strcat
y strcpy
para concatenar cadenas e int en C
El primer paso para concatenar la variable int
y la cadena de caracteres es convertir un entero en una cadena. Utilizamos la función asprintf
para almacenar el entero pasado como una cadena de caracteres. asprintf
es parte de la extensión de la biblioteca GNU C y puede no estar disponible en otras implementaciones. Funciona de manera similar a sprintf
excepto que el búfer de cadena de caracteres de destino se asigna dinámicamente usando la llamada a la función malloc
internamente, y el puntero devuelto debe liberarse antes de salir del programa. Una vez convertido el entero, encadenamos las llamadas strcpy
y strcat
para concatenar dos cadenas de caracteres dadas en el búfer que asigna el usuario. En este caso, definimos arbitrariamente la macro MAX
para indicar el tamaño del búfer de destino, pero en escenarios reales, sería más flexible utilizar malloc
.
#define _GNU_SOURCE
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#ifndef MAX
#define MAX 100
#endif
int main(int argc, char *argv[]) {
const char *str1 = "hello there";
int n1 = 1234;
char *num;
char buffer[MAX];
if (asprintf(&num, "%d", n1) == -1) {
perror("asprintf");
} else {
strcat(strcpy(buffer, str1), num);
printf("%s\n", buffer);
free(num);
}
exit(EXIT_SUCCESS);
}
Producción :
hello there1234
Alternativamente, las llamadas encadenadas pueden ir seguidas de otra invocación de la función strcat
y agregar otras cadenas al búfer char
dado. Tenga en cuenta que verificamos la función asprintf
para el valor de retorno exitoso, y si falla, continuamos con el proceso de concatenación.
#define _GNU_SOURCE
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#ifndef MAX
#define MAX 100
#endif
int main(int argc, char *argv[]) {
const char *str1 = "hello there";
int n1 = 1234;
char *num;
char buffer[MAX];
if (asprintf(&num, "%d", n1) == -1) {
perror("asprintf");
} else {
strcat(strcpy(buffer, "Hello there, "), num);
strcat(buffer, "! continued");
printf("%s\n", buffer);
free(num);
}
exit(EXIT_SUCCESS);
}
Producción :
Hello there, 1234! continued
Utilice las funciones asprintf
y memccpy
para concatenar cadenas e int en C
Alternativamente, asprintf
se puede utilizar junto con memccpy
para concatenar la cadena de caracteres e int
. memccpy
es parte de las utilidades de cadena de biblioteca estándar de C definidas en el archivo de encabezado <string.h>
. Se necesitan dos punteros que denotan los búferes de origen y destino. Tenga en cuenta que estas áreas de la memoria intermedia no deben superponerse; de lo contrario, los resultados no están definidos. Los dos últimos argumentos representan el carácter en el que dejar de copiar y el número máximo de bytes que se tomarán de la ubicación de origen. Llamamos a la función free
en el ámbito else
ya que, de lo contrario, no podemos estar seguros de que el puntero num
sea el puntero válido.
#define _GNU_SOURCE
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#ifndef MAX
#define MAX 100
#endif
int main(int argc, char *argv[]) {
const char *str1 = "hello there";
int n1 = 1234;
char *num;
char buffer[MAX];
if (asprintf(&num, "%d", n1) == -1) {
perror("asprintf");
} else {
memccpy(memccpy(buffer, str1, '\0', MAX) - 1, num, '\0', MAX);
printf("%s\n", buffer);
free(num);
}
exit(EXIT_SUCCESS);
}
Producción :
hello there1234
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook