elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Sustituir un caracter en C (String.h)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Sustituir un caracter en C (String.h)  (Leído 3,333 veces)
JoiaribDG

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Sustituir un caracter en C (String.h)
« en: 3 Marzo 2016, 16:07 pm »

Tengo una tarea en la que tengo que ingresar una palabra o un nombre, y despues ingresar cuantas veces quiero que esa palabra se repita, todo bien hasta aqui, pero tambien me pide que despues pida una letra, y que esa letra sistituya la primera letra de la palabra con esta letra
Código:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char *argv[])
{
char texto1[40],letra[1];
int n,c=1;

printf("\nIntroduce tu nombre:");
gets(texto1);
printf("\nCuantas veces quieres repetir tu nombre:");
scanf("%d",&n);
printf("\nCon que letra quieres reemplazar la primera letra de tu nombre?:");
scanf("%s", &letra[1]);

texto1[1]=letra[1];

for(c=1;c<=n;c++)
{
printf("%s\n",texto1);
    }
getch();

return 0;
}

Hasta  ahora tenia bien el razonamiento pero no me funciona el programa :/ necesito ayuda el programa se entrega hoy :c


En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Sustituir un caracter en C (String.h)
« Respuesta #1 en: 3 Marzo 2016, 16:34 pm »

Vale, unas cuantas cosas que no tienes claras:
Un array de 1 elemento es una redundancia, por tanto donde pone
Código
  1. char texto1[40],letra[1];
debe poner
Código
  1. char texto1[40],letra;

Los arrays en C empiezan en el índice 0, no el 1. Así pues donde pone
Código
  1. texto[1] = letra[1]
debe poner
Código
  1. texto[0] = letra[0];
pero como hemos dicho que letra es un simple char la línea debe ser así:
Código
  1. texto[0] = letra

Un fallo que has realizado es en la linea
Código
  1. scanf("%s", &letra[1]);
porque estas cargando toda una cadena donde solo te cabe un caracter. Además el fallo es más grave porqué estás escribiendo fuera de la memoria asignada para letra (solo tienes asignado letra[0], escribir en letra[1] es escribir fuera de los límites de la variable). Además hay que recordar que letra lo hemos dejado como caracter por tanto debería escribirse todo de esta forma:
Código
  1. scanf("%c", &letra);
o mejor aún haciendo uso de getchar así:
Código
  1. letra = getchar();


En línea

JoiaribDG

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: Sustituir un caracter en C (String.h)
« Respuesta #2 en: 3 Marzo 2016, 17:47 pm »

Muchisimas Gracias! :D mi logica estaba mal! D: pero muchisimas gracias por la ayuda me has servido bastante :D ;-)
En línea

CrystalChild

Desconectado Desconectado

Mensajes: 3


Just another hacktivist wannabe.


Ver Perfil
Re: Sustituir un caracter en C (String.h)
« Respuesta #3 en: 4 Marzo 2016, 06:46 am »

Ya que estaba, me puse a hacer esto...
Pero hay algo que no está funcionando
Y no encuentro el error. Ya lo leí a conciencia varias veces.

Acá el screenshot https://fbcdn-sphotos-c-a.akamaihd.net/hphotos-ak-xlt1/v/t35.0-12/12810175_10205913314980397_245721758_o.jpg?oh=9d57bfe43b3e649585ae761918799783&oe=56DADB9B&__gda__=1457264705_19db812568cc7e1c9538e3ffc919bd8e
En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Sustituir un caracter en C (String.h)
« Respuesta #4 en: 4 Marzo 2016, 10:55 am »

El problema se encuentra en que después de leer el número de veces a repetir la palabra, en el buffer sigue quedando el caracter de nueva línea que has introducido al pulsar la tecla ENTER. Para solucionar esto puedes usar la siguiente linea de código después de una lectura de estas:
Código
  1. while(getchar() != '\n');
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines