Concatenar cadenas de texto (Strings) utilizando punteros

CCBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En la programación en C, podemos concatenar dos cadenas utilizando punteros apuntando la dirección base de las dos cadenas a una variable puntero de tipo char, incrementando el puntero hasta el final de la primera cadena y luego copiando los caracteres de la segunda cadena al final de la primera.

En este laboratorio (lab), aprenderás cómo concatenar dos cadenas utilizando punteros en el lenguaje de programación C.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL c(("C")) -.-> c/CompoundTypesGroup(["Compound Types"]) c(("C")) -.-> c/UserInteractionGroup(["User Interaction"]) c(("C")) -.-> c/FileHandlingGroup(["File Handling"]) c(("C")) -.-> c/BasicsGroup(["Basics"]) c(("C")) -.-> c/ControlFlowGroup(["Control Flow"]) c(("C")) -.-> c/PointersandMemoryGroup(["Pointers and Memory"]) c(("C")) -.-> c/FunctionsGroup(["Functions"]) c/BasicsGroup -.-> c/variables("Variables") c/ControlFlowGroup -.-> c/while_loop("While Loop") c/CompoundTypesGroup -.-> c/arrays("Arrays") c/CompoundTypesGroup -.-> c/strings("Strings") c/PointersandMemoryGroup -.-> c/pointers("Pointers") c/FunctionsGroup -.-> c/function_declaration("Function Declaration") c/FileHandlingGroup -.-> c/create_files("Create Files") c/UserInteractionGroup -.-> c/user_input("User Input") c/UserInteractionGroup -.-> c/output("Output") subgraph Lab Skills c/variables -.-> lab-123226{{"Concatenar cadenas de texto (Strings) utilizando punteros"}} c/while_loop -.-> lab-123226{{"Concatenar cadenas de texto (Strings) utilizando punteros"}} c/arrays -.-> lab-123226{{"Concatenar cadenas de texto (Strings) utilizando punteros"}} c/strings -.-> lab-123226{{"Concatenar cadenas de texto (Strings) utilizando punteros"}} c/pointers -.-> lab-123226{{"Concatenar cadenas de texto (Strings) utilizando punteros"}} c/function_declaration -.-> lab-123226{{"Concatenar cadenas de texto (Strings) utilizando punteros"}} c/create_files -.-> lab-123226{{"Concatenar cadenas de texto (Strings) utilizando punteros"}} c/user_input -.-> lab-123226{{"Concatenar cadenas de texto (Strings) utilizando punteros"}} c/output -.-> lab-123226{{"Concatenar cadenas de texto (Strings) utilizando punteros"}} end

Crear un nuevo archivo

En primer lugar, abre tu editor de texto y crea un nuevo archivo llamado main.c en el directorio ~/project/.

Incluir archivos de cabecera (Header Files)

En este paso, incluye los archivos de cabecera necesarios en el programa, que son stdio.h y stdlib.h.

#include <stdio.h>
#include <stdlib.h>

Definir la función main()

La función main() se utiliza para definir el cuerpo del programa en C.

int main(){
  // TODO: Write code here
  return 0;
}

Declarar variables

En este paso, declara dos arreglos de caracteres aa y bb con un tamaño de 100 bytes cada uno.

char aa[100], bb[100];

Ingresar cadenas de texto (Strings)

En este paso, el usuario proporcionará los valores para las dos cadenas de texto aa y bb y las almacenará utilizando la función gets().

printf("Enter the first string: ");
gets(aa);

printf("Enter the second string to be concatenated: ");
gets(bb);

Concatenar cadenas de texto (Strings)

En este paso, definiremos dos punteros a caracteres a y b y comenzaremos a concatenar la segunda cadena de texto bb con la primera aa.

char *a = aa;
char *b = bb;

while(*a){
  a++;
}

while(*b){
  *a = *b;
  b++;
  a++;
}
*a = '\0';
  • *a apunta a la siguiente ubicación de memoria siempre y cuando no apunte al final de la primera cadena de texto aa. Esto se hace utilizando la expresión while(*a).
  • Aquí, a se incrementa a la siguiente ubicación de memoria hasta que alcanza el final de la primera cadena de texto aa.
  • *b apunta a la siguiente ubicación de memoria hasta que no apunte al final de la segunda cadena de texto bb. Esto se hace utilizando la expresión while(*b).
  • Para cada ubicación de memoria, a se le asigna el valor al que apunta b y luego tanto a como b se incrementan. Esto se hace utilizando la expresión *a = *b; b++; a++;
  • El '\0' representa el final de la cadena de texto.

Mostrar la cadena de texto concatenada

En este paso, muestra la cadena de texto concatenada después de completar el proceso de concatenación.

printf("\nThe string after concatenation is: %s ", aa);

Compilar y ejecutar

En este paso, compila y ejecuta el archivo main.c utilizando los siguientes comandos:

gcc main.c -o output
./output

Código completo

A continuación, se muestra el código completo del programa "Concatenar cadenas de texto (Strings) utilizando punteros":

#include <stdio.h>
#include <stdlib.h>

int main(){
  char aa[100], bb[100];

  printf("Enter the first string: ");
  gets(aa);

  printf("Enter the second string to be concatenated: ");
  gets(bb);

  char *a = aa;
  char *b = bb;

  while(*a){
    a++;
  }

  while(*b){
    *a = *b;
    b++;
    a++;
  }
  *a = '\0';

  printf("\nThe string after concatenation is: %s ", aa);

  return 0;
}

Resumen

En este laboratorio (lab), aprendiste cómo concatenar dos cadenas de texto (strings) utilizando punteros en el lenguaje de programación C. Hicimos esto apuntando la dirección base de las dos cadenas de texto a una variable puntero a carácter (char pointer) e incrementando el puntero hasta el final de la primera cadena de texto y luego copiando los caracteres de la segunda cadena de texto al final de la primera. Recuerda compilar y ejecutar el código para comprobar su funcionalidad.