domingo, 14 de junio de 2026

Encontrar la primera posición de un carácter x de una cadena en C

Código del ejercicio:

#include <stdio.h>
#include <locale.h>
#include <string.h>

int main(){
    setlocale(LC_CTYPE, "Spanish");
    int i = 0, p = 0, sw = 0;
    char s[200], l;
    printf("Ingresar texto: ");
    gets(s);
    printf("Ingresar carácter: ");
    scanf("%c", &l);
    while(i < strlen(s) && sw == 0){
        if(s[i] == l){
            p = i;
            sw = 1;
        }
        i++;
    }
    printf("El carácter %c está en la posición %i", l, p);
    return 0;
}

Definición de los códigos del ejercicio:

#include <stdio.h> --> significa "standard input-output header" (cabecera estándar E/S), es un archivo de encabezado que tiene la información necesaria para incluir las funciones relacionadas con la entrada/salida en nuestro programa. Ejemplo printf, scanf, etc.
#include <locale.h> --> especificador de configuración regional.
#include <string.h> --> declara un conjunto de funciones para trabajar con cadenas.
int --> dato entero de 32 bits.
main() --> es la primera función de cada programa C que es responsable de iniciar la ejecución y finalización del programa. Es una función especial que siempre comienza a ejecutar código desde el ' principal ' que tiene ' int ' o ' void ' como tipo de datos de retorno. En otras palabras, una función main() es un punto de entrada del código de programación para iniciar su ejecución.
return 0; --> devolver 0 en la función principal significa que el programa se ejecutó correctamente.
setlocale(); --> sirve para configurar nuestro programa acorde a los parámetros locales de la computadora donde se ejecuta el programa, uno de estos parámetros es el idioma.
LC_CTYPE --> selecciona la categoría de clasificación de caracteres del entorno local.
setlocale(LC_CTYPE, "Spanish"); --> dentro de las comillas del segundo parámetro colocaremos la palabra "Spanish" para que así se utilicen los parámetros hispanos por defecto.
printf() --> permite la aparición de valores numéricos, caracteres y cadenas de texto por pantalla.
scanf() --> permite entrar datos en la memoria del ordenador a través del teclado.
char a[size] = "hola"; --> una cadena de caracteres es un número de caracteres consecutivos (incluso ninguno) encerrado entre unos delimitadores determinados, que en el lenguaje C son las comillas dobles. Para definir variables de tipo cadena, estas se definen como vectores de caracteres, esto es, anteponiendo la palabra reservada char al identificador de la variable, y después entre corchetes la longitud máxima de cadena.
char n = 'N'; --> una constante tipo char se representa como un solo carácter encerrado entre comillas simples.
gets() --> lee una cadena de texto desde teclado.
while --> el ciclo while recorre un bloque de código siempre que una condición específica sea verdadera.
< --> el operador menor que ( < ) devuelve true si el operando izquierdo es menor que el operando derecho.
strlen() --> devuelve la longitud de una cadena de texto.
&& --> el operador lógico AND ( && ) (conjunción lógica) para un conjunto de operandos booleanos será true si y solo si todos los operandos son true. De lo contrario será false.
!= --> el operador de desigualdad ( != ) comprueba si sus dos operandos no son iguales y devuelve un resultado booleano.
if --> use if para especificar un bloque de código que se ejecutará, si una condición especificada es verdadera.
else --> use else para especificar un bloque de código a ejecutar, si la misma condición es falsa.
== --> el operador de igualdad ( == ) regresa true si sus operandos son iguales, false en caso contrario.
++ --> el operador de incremento ( ++ ) incrementa (suma uno a) su operando y devuelve un valor.

Explicación del Código:

Código en C
#include <stdio.h> #include <locale.h> #include <string.h> int main(){ setlocale(LC_CTYPE, "Spanish"); int i = 0, p = 0, sw = 0; char s[200], l; printf("Ingresar texto: "); gets(s); printf("Ingresar carácter: "); scanf("%c", &l); while(i < strlen(s) && sw == 0){ if(s[i] == l){ p = i; sw = 1; } i++; } printf("El carácter %c está en la posición %i", l, p); return 0; }
Explicación simple
  • stdio.h: Permite usar printf y scanf.
  • locale.h: Configura el idioma del programa.
  • string.h: Permite usar strlen para medir la cadena.
  • setlocale: Activa soporte en español.
  • i: recorre la cadena.
  • p: guarda la posición del carácter encontrado.
  • sw: indica si ya se encontró el carácter.
  • s[200]: cadena de texto ingresada.
  • l: carácter a buscar.
  • gets: lee la cadena (obsoleta).
  • while: recorre la cadena hasta encontrar el carácter.
  • if: compara cada letra con el carácter buscado.
  • printf: muestra la posición encontrada.
Resumen

El programa busca la primera aparición de un carácter dentro de una cadena y muestra en qué posición se encuentra.

Código del ejercicio: Otra forma de hacer

#include <stdio.h>
#include <locale.h>
#include <string.h>

int main(){
    setlocale(LC_CTYPE, "Spanish");
    int i = 0;
    char s[200], x;
    printf("Ingresar texto: ");
    gets(s);
    printf("Ingresar carácter: ");
    scanf("%c", &x);
    while(i < strlen(s)){
        if(s[i] != x){
            i++;
        }else{
            printf("El carácter %c está en la posición %i", x, i);
            i = strlen(s);
        }
    }
    return 0;
}

Definición de los códigos del ejercicio:

#include <stdio.h> --> significa "standard input-output header" (cabecera estándar E/S), es un archivo de encabezado que tiene la información necesaria para incluir las funciones relacionadas con la entrada/salida en nuestro programa. Ejemplo printf, scanf, etc.
#include <locale.h> --> especificador de configuración regional.
#include <string.h> --> declara un conjunto de funciones para trabajar con cadenas.
int --> dato entero de 32 bits.
main() --> es la primera función de cada programa C que es responsable de iniciar la ejecución y finalización del programa. Es una función especial que siempre comienza a ejecutar código desde el ' principal ' que tiene ' int ' o ' void ' como tipo de datos de retorno. En otras palabras, una función main() es un punto de entrada del código de programación para iniciar su ejecución.
return 0; --> devolver 0 en la función principal significa que el programa se ejecutó correctamente.
setlocale(); --> sirve para configurar nuestro programa acorde a los parámetros locales de la computadora donde se ejecuta el programa, uno de estos parámetros es el idioma.
LC_CTYPE --> selecciona la categoría de clasificación de caracteres del entorno local.
setlocale(LC_CTYPE, "Spanish"); --> dentro de las comillas del segundo parámetro colocaremos la palabra "Spanish" para que así se utilicen los parámetros hispanos por defecto.
printf() --> permite la aparición de valores numéricos, caracteres y cadenas de texto por pantalla.
scanf() --> permite entrar datos en la memoria del ordenador a través del teclado.
char a[size] = "hola"; --> una cadena de caracteres es un número de caracteres consecutivos (incluso ninguno) encerrado entre unos delimitadores determinados, que en el lenguaje C son las comillas dobles. Para definir variables de tipo cadena, estas se definen como vectores de caracteres, esto es, anteponiendo la palabra reservada char al identificador de la variable, y después entre corchetes la longitud máxima de cadena.
char n = 'N'; --> una constante tipo char se representa como un solo carácter encerrado entre comillas simples.
gets() --> lee una cadena de texto desde teclado.
while --> el ciclo while recorre un bloque de código siempre que una condición específica sea verdadera.
< --> el operador menor que ( < ) devuelve true si el operando izquierdo es menor que el operando derecho.
strlen() --> devuelve la longitud de una cadena de texto.
&& --> el operador lógico AND ( && ) (conjunción lógica) para un conjunto de operandos booleanos será true si y solo si todos los operandos son true. De lo contrario será false.
!= --> el operador de desigualdad ( != ) comprueba si sus dos operandos no son iguales y devuelve un resultado booleano.
if --> use if para especificar un bloque de código que se ejecutará, si una condición especificada es verdadera.
else --> use else para especificar un bloque de código a ejecutar, si la misma condición es falsa.
== --> el operador de igualdad ( == ) regresa true si sus operandos son iguales, false en caso contrario.
++ --> el operador de incremento ( ++ ) incrementa (suma uno a) su operando y devuelve un valor.

Explicación del Código:

✔ ¿Qué hace el programa?
Este programa permite ingresar un texto y un carácter, luego busca la primera posición donde aparece ese carácter dentro de la cadena.
✔ Librerías usadas
stdio.h: entrada y salida de datos.
locale.h: configuración de idioma.
string.h: uso de strlen para medir la cadena.
✔ Variables
i: contador para recorrer la cadena.
s[200]: almacena el texto ingresado.
x: carácter que se desea buscar.
✔ Ingreso de datos
Se usa gets(s) para leer la cadena y scanf("%c", &x) para ingresar el carácter a buscar.
✔ Proceso del programa
El ciclo while recorre la cadena letra por letra hasta encontrar el carácter o llegar al final.
✔ Condición de búsqueda
Si el carácter en la posición actual es diferente, el índice aumenta.
Si es igual, se muestra la posición y se detiene la búsqueda.
✔ Conclusión
Este ejercicio implementa una búsqueda lineal simple dentro de una cadena de texto en lenguaje C.

No hay comentarios.:

Publicar un comentario

Mostrar la siguiente serie: 0,5,10,15,20,25,30,35,40,... en C

Código del ejercicio: #include <stdio.h> #include <locale.h> int main (){     setlocale (LC_CTYPE, "Spani...

Copyright ©2025 Ejercicios de programación. Todos los derechos reservados. ❤️