Se me ha ocurrido una idea, que también elimina el , pero es más eficiente y además no nos la liará si hay mas de un que está puesto de forma cosciente, la función sería la siguiente: void Convert(char string1[30]){ int change; change=strlen(string1); string1[change-1]='\0'; }
Me hizo mucha gracia cuando en un vídeo anterior descubrí que estuviste en la UCA, yo estoy en el grado de matemáticas y estoy dando informática pero por los apuntes no me entero de nada, cosa que creo que dijiste que te paso a ti también xDD PD: Me encantan tus vídeos, sigue así!
Muchas gracias por toda tu ayuda, hice lo que hiciste pero con algunas funciones #include #include #include #define num 50 // cambiar en una frase ingreasada por teclado, las letras a por un espacio void ingresar(char stg[]); void cambiarLetra(char stg[],char letra); int main() { char frase[num]; ingresar(frase); cambiarLetra(frase,'a'); printf("%s",frase); return 0; } void ingresar(char stg[]){ printf("Introduce una frase "); fflush(stdin); fgets(stg,num,stdin); } void cambiarLetra(char stg[],char letra){ int cantLetras, i; cantLetras=strlen(stg); for(i=0; i < cantLetras; i++){ if (stg[i]==letra){ // en este caso no necesitamos strcmp porque estamos comparando caracteres, esas funcion es para strings stg[i]=' '; } } }
Hola, excelentes videos. eres bueno explicando, disculpa... el enlace que dejaste a dropbox está caído, podrias proporcionar nuevamente el enlace, porfavor.
Una pregunta la cadena se guarda en un vector. y por que no se inicializa el tamaño del vector. o es que de forma automática la memoria reserva espacio con respecto al tamaño de la cadena.
tus videos son increibles, aun hoy me sirven, pero una pequeña duda, porque arriba la frase va con comillas dobles y luego abajo la 'a' va en comillas simples ? muchas gracias
iTiago98 Claro. No es que se pierda memoria, sino que ocupa memoria que no es suya lo que puede ocasionar problemas porque le estas quitando la memoria a Windows, un programa, o lo que sea...
Muy buenas que tal .. creo que en la función al contar los caracteres no se incluye el \0, por lo tanto al poner (i < limite) no estas considarando la ultima letra por lo que deberias poner (
Deja de creer cosas y compruébalo, además de que estás equivocado, ya que un string, empieza en la posición 0, por lo tanto si strlen te devuelve 9 caracteres tu deberás comprobar el, 0,1,2,3,4,5,6,7,8 (que son los 9).
Lo siento, pero no conozco lo suficiente de allegro como para hacer un curso. En el futuro lo hare de otra libreria mucho mas potente que se llama Libgdx, buscala y mira un poco como va, se programa en Java y es realmente muy potente. Un saludo.
disculpe. cómo seria la estructura para introducir el string por teclado: que se pondria en el espacio donde va el numero de caracteres del string. printf ("introduce una frase: "); fgets (c1,?,stdin); gracias, saludos desde colombia, y excelentes todos los videos, he aprendido mucho y me esta gustando demasiado esto de la programacion
Bueno, me he mirado los dos videos de strings y el PDF y no encuentro lo que quiero. te pongo un ejemplo, estoy haciendo la primera pantalla de un juego en el que quiero que los jugadores escriban sus nombres, quiero que el nombre tenga un máximo de 10 caracteres. De la forma que has explicado el usuario puedes escribir lo caracteres que quiera pero el programa solo recogerá 10. Se como hacer que se muestre un mensaje de error para que el usuario tenga que volver a escribir otra vez, pero lo que quiero hacer es que cuando el usuario escriba el 10 caracter no le deje escribir mas. Como pasaba en las recreativas o incluso es muchos juegos actuales. Como puedo hacer eso?. Gracias
yo le agregue que ahora pida una frase y despues pida que letra desea reemplazar de esa frase por un asterisco :] #include #include void cd1(char c1[20] ,char caracter[2]); int main(){
char c1[20]; char caracter[2];
printf("introduce una frase: "); fgets(c1,20,stdin);
printf("que letra desea reemplazar: "); fgets(caracter,2,stdin);
hola, en la parte final del vídeo se usa strlen se olvida de dar la salida a la longitud de la cadena. Soy novata en esto, seria correcto dar la salida en void??? he escrito algo así; void limite (char c1[]){ int i, longitud, aux; longitud =0; aux = 0; longitud =strlen(c1); for (i=0; i
hola que tal, la verdad es que me gusta su explicacion, pero tengo una duda, yo estoy trabajando con code blocks y cuando definido un variable struct y utilizo el typedef y le pongo un nombre en el suprograma , el compilador me da error, como es que a usted si le deja y a mi no, le pongo un ejemplo. typedef struct {int identificador; char nombre[50]; }Almacen; lo he intentado varias veces y no me deja. gracias
+Jose Manuel Muñoz Esteban +Erik Ivan Gallardo No es tal como lo dices Jose Manuel, el no esta pidiendo una matriz dinámica, esta pidiendo una matriz a secas, lo cual se puede hacer con los conocimientos de matrices que enseño en este bloque. Simplemente, en vez de hacer una matriz de enteros hay que hacerla de char y de la dimensión que se requiere al comienzo. Si no supiera la dimensión deseada o se fuese ampliando a lo largo de la vida del programa, se requeriría que fuese dinámica. Un saludo.
Hola +Empieza A Programar, tengo un problema y me gustaría saber si me podes dar una solución, me gustaría que al ingresar una contraseña los caracteres se visualicen como '*' y no la verdadera palabra, como lo logro?, busco y busco y no lo encuentro :(
una pregunta: si tienes un string tipo char de dimensión 9, y se introducen por ejemplo 1234567. como se podría completar el numero con ceros en la izquierda y que lo imprima? es decir, quiero que me imprima 001234567. para que los "0" completen la dimensión del vector. GRACIAS!!!!
Ya lo he hecho, y funciona, he cambiado algunas cosas que estaban mal, si tienes alguna duda, pregúntame, no soy un experto, yo también voy por este vídeo, pero al igual puedo ayudarte en algo!!... : #include #include void ChangeString(char srt[9]); int main(){ char str1[9]; printf("Introduce prhase to str1 "); fgets(str1,9,stdin); ChangeString(str1); puts(str1); system("pause"); return 0; } void ChangeString(char str[9]){ int lengh; lengh=strlen(str); printf("Lengh value is: %i. ",lengh); int i; for(i=lengh-1;i
A la hora de hacer el printf para que te imprima los 7 números del vector añades 010 entre el % y la s. Ejemplo: 1º- introduces los 7 valores al vector[10] con fgets 2º-y luego imprimes los valores así: printf(''%010s'',vector);
Que te parece un ejercicio que sea de hacer un programa que detecte si un numero es capicua o una frase es un polidromo, lo he intentado un monton de veces pero nunca me sale.
Disculpa, me gustaría tener el PDF de las funciones mas importantes de strings, me sale que hay un error en el dropbox o que se ha borrado, aun lo tienes a los archivos? Me ha sido muy util hasta ver todos los videos, espero que siga genial todo. Saludos y agradeceré tu respuesta a mi pedido.
//Strings #include #include int main (){ char c[] = "Hola como va"; leer (c); system ("pause"); return 0; } void leer (char c[]){ int i,max; max = strlen(c); for (i = 0; i < max; i++){ c[i]; if (c[i] != ' '){ printf ("%c",c[i]); } } printf (" "); }
Escribí este código y sucede algo MISTERIOSO en el renglón 8 y el renglón 24 (los renglones de cuando lo ejecutás): #include #include int main() { char frase[27], i; for(i=0; i
@@charly-ic2dd uhyy si por favor ,es que tengo una actividad que estoy estancado Tengo que un usuario ponga su nombre o apellido y de esos sacar sus iniciales : eje: camilo torres y debe salir : Ct , se el código para que el usuario escriba su nombre y apellido pero no se como que el carácter inicial tanto el del nombre y el del apellido salgan.... si me ayudas muchas gracias. y debo utilizar string
+Leonel Cruz Llego tarde pero por si a alguien le sirve: Tu "void fo(char f[])" debería ser "void cambio(char f[])" ya que la función se llama "cambio".
Maestro, primero que nada... Sé cuanto te jode que te molestemos por aca, pero sobre los PDF con ejercicios que venis dejando (que son muy buenos por cierto, no hay mejor manera de aprender a programar que programando), el ultimo que dejaste, en el ejercicio 22 el de los palíndromos... Me sale/salió checkear palabras palíndromas; pero cuando trato de hacer que "checkee" frases palíndromas al momento de querer sacar los espacios del medio (lo logro con una función) y al compararlos (con stricmp/strcmpi) pareciera que el sacarle los espacios me jode su memoria y al momento de compararlos aunque se vean iguales luego de invertir y sacar espacios me los toma como que son distintos. Mi pregunta sin más es, no hacer un video si no queres, pero si pudieras al menos postear/responderme con una hojita PDF o un archivo ".c" o algo, la resolución del problema, ya que hasta busqué en internet como media hora, pero nadie se calienta en frases palíndromas, te muestran solo palabras. Gracias por los videos por cierto, sos el mejor!! +Empieza A Programar
+Alan Randsom Al final lo solucione, el problema era que al invertir me invertia el \0; y por eso quedaba distinto el string. Aunque ahora que lo pienso tambien en lugar de invertir y comparar, podria haber hecho una funcion que tenga dos variables numericas, una 0 y la otra el length del string; e ir subiendo la primera y bajando la segunda e ir comparando si cada char es igual a su opuesto. Pero baah el invertirlos me sirvio para aprender supongo. Por cierto el problema lo soluciones poniendo en la condicional que " string[i] != '\0' " cosa que deje ese caracter donde estaba... Por si alguien esta teniendo el mismo problema.
Me entero mejor viendo media hora de tus vídeos que en 10 horas de clase.
hola amigo estas en ingenieria de sistema saludos
isaac feria noo, Mecánica
Muchas gracias por estos videos son una enorme ayuda,
Saludos.
Se me ha ocurrido una idea, que también elimina el
, pero es más eficiente y además no nos la liará si hay mas de un
que está puesto de forma cosciente, la función sería la siguiente:
void Convert(char string1[30]){
int change;
change=strlen(string1);
string1[change-1]='\0';
}
muchas gracias por los videos y por el pdf
Me hizo mucha gracia cuando en un vídeo anterior descubrí que estuviste en la UCA, yo estoy en el grado de matemáticas y estoy dando informática pero por los apuntes no me entero de nada, cosa que creo que dijiste que te paso a ti también xDD
PD: Me encantan tus vídeos, sigue así!
Muchas gracias por toda tu ayuda, hice lo que hiciste pero con algunas funciones
#include
#include
#include
#define num 50
// cambiar en una frase ingreasada por teclado, las letras a por un espacio
void ingresar(char stg[]);
void cambiarLetra(char stg[],char letra);
int main()
{
char frase[num];
ingresar(frase);
cambiarLetra(frase,'a');
printf("%s",frase);
return 0;
}
void ingresar(char stg[]){
printf("Introduce una frase
");
fflush(stdin);
fgets(stg,num,stdin);
}
void cambiarLetra(char stg[],char letra){
int cantLetras, i;
cantLetras=strlen(stg);
for(i=0; i < cantLetras; i++){
if (stg[i]==letra){ // en este caso no necesitamos strcmp porque estamos comparando caracteres, esas funcion es para strings
stg[i]=' ';
}
}
}
EXCELENTE!
Si apruebo me suscribo, lo tienes complicao bro pero no imposible
Aprobaste?
@@armandomora1192 el colega está suscrito así q parece q sí
También yo pasé JAJA
Enseñanos a como hacer un boot
Seria Increible!
Hola, excelentes videos. eres bueno explicando, disculpa... el enlace que dejaste a dropbox está caído, podrias proporcionar nuevamente el enlace, porfavor.
Una pregunta la cadena se guarda en un vector. y por que no se inicializa el tamaño del vector. o es que de forma automática la memoria reserva espacio con respecto al tamaño de la cadena.
tus videos son increibles, aun hoy me sirven, pero una pequeña duda, porque arriba la frase va con comillas dobles y luego abajo la 'a' va en comillas simples ? muchas gracias
¿Qué ocurriría si se hiciera un fgets a un string que no tiene límite de caracteres? ¿También se perdería memoria como con gets?
iTiago98 Claro. No es que se pierda memoria, sino que ocupa memoria que no es suya lo que puede ocasionar problemas porque le estas quitando la memoria a Windows, un programa, o lo que sea...
Empieza A Programar a eso me refería, a perder datos. No sé por qué he dicho perder memoria... Gracias por el aviso
Muy buenas que tal .. creo que en la función al contar los caracteres no se incluye el \0, por lo tanto al poner (i < limite) no estas considarando la ultima letra por lo que deberias poner (
Deja de creer cosas y compruébalo, además de que estás equivocado, ya que un string, empieza en la posición 0, por lo tanto si strlen te devuelve 9 caracteres tu deberás comprobar el, 0,1,2,3,4,5,6,7,8 (que son los 9).
Ya lo porbe hace 10 meses, estas equivocado. salu2 y buena suerte con tu canal!
Ya te digo yo que no hahaha, ademas no es mi canal. Pero bueno si no quieres reconocer tu errores alla tú.
Creo que en el minuto 9:23 está mal, puesto que strlen no cuenta el caracter \0, entonces el bucle debe ser for (i=0; i
Podrias hacer un curso de la libreria allegro en la version actual de dev c++.
?????
Lo siento, pero no conozco lo suficiente de allegro como para hacer un curso.
En el futuro lo hare de otra libreria mucho mas potente que se llama Libgdx, buscala y mira un poco como va, se programa en Java y es realmente muy potente.
Un saludo.
disculpe. cómo seria la estructura para introducir el string por teclado: que se pondria en el espacio donde va el numero de caracteres del string.
printf ("introduce una frase: ");
fgets (c1,?,stdin);
gracias, saludos desde colombia, y excelentes todos los videos, he aprendido mucho y me esta gustando demasiado esto de la programacion
anderson loaiza Todo lo explico, mejor que vayas poco a poco.
Un saludo.
Hola buenas tardes. Llevo toda la tarde intentando sacar un ejercicio y no me sale. Te pide comprobar si una palabra es palindromo o no. Gracias
Bueno, me he mirado los dos videos de strings y el PDF y no encuentro lo que quiero.
te pongo un ejemplo, estoy haciendo la primera pantalla de un juego en el que quiero que los jugadores escriban sus nombres, quiero que el nombre tenga un máximo de 10 caracteres.
De la forma que has explicado el usuario puedes escribir lo caracteres que quiera pero el programa solo recogerá 10. Se como hacer que se muestre un mensaje de error para que el usuario tenga que volver a escribir otra vez, pero lo que quiero hacer es que cuando el usuario escriba el 10 caracter no le deje escribir mas. Como pasaba en las recreativas o incluso es muchos juegos actuales. Como puedo hacer eso?. Gracias
A parte de indicarlo antes, yo podría un do while para validar y ya.
Respuesta con dos años de tardanza, pero espero que le sirva a alguien.
hola, ¿que significa que son las cadenas imutables? aqui cambian un caracter
que tal puedes hacer un ejemplo de numeros aleatorios pero que los numeros no se repitan ni una sola vez
yo le agregue que ahora pida una frase y despues pida que letra desea reemplazar de esa frase por un asterisco :]
#include
#include
void cd1(char c1[20] ,char caracter[2]);
int main(){
char c1[20];
char caracter[2];
printf("introduce una frase: ");
fgets(c1,20,stdin);
printf("que letra desea reemplazar: ");
fgets(caracter,2,stdin);
cd1(c1,caracter);
printf("%s\0",c1);
system("pause");
return 0;
}
void cd1(char c1[20] ,char caracter[2]){
int i;
for(i=0;i
hola, en la parte final del vídeo se usa strlen se olvida de dar la salida a la longitud de la cadena. Soy novata en esto, seria correcto dar la salida en void???
he escrito algo así;
void limite (char c1[]){
int i, longitud, aux;
longitud =0;
aux = 0;
longitud =strlen(c1);
for (i=0; i
hola que tal, la verdad es que me gusta su explicacion, pero tengo una duda, yo estoy trabajando con code blocks y cuando definido un variable struct y utilizo el typedef y le pongo un nombre en el suprograma , el compilador me da error, como es que a usted si le deja y a mi no, le pongo un ejemplo. typedef struct {int identificador; char nombre[50]; }Almacen; lo he intentado varias veces y no me deja. gracias
hola, buenas tardes, si quisieramos hacer una matriz con caracteres, e de ejemplo una matris de tres palabras por tres palabras?
+Jose Manuel Muñoz Esteban +Erik Ivan Gallardo No es tal como lo dices Jose Manuel, el no esta pidiendo una matriz dinámica, esta pidiendo una matriz a secas, lo cual se puede hacer con los conocimientos de matrices que enseño en este bloque.
Simplemente, en vez de hacer una matriz de enteros hay que hacerla de char y de la dimensión que se requiere al comienzo. Si no supiera la dimensión deseada o se fuese ampliando a lo largo de la vida del programa, se requeriría que fuese dinámica.
Un saludo.
En el límite del for no sería un
+Juan Daniel Basantes Carrasco No, recuerda que los arrays empiezan de 0...
Hola +Empieza A Programar, tengo un problema y me gustaría saber si me podes dar una solución, me gustaría que al ingresar una contraseña los caracteres se visualicen como '*' y no la verdadera palabra, como lo logro?, busco y busco y no lo encuentro :(
una pregunta: si tienes un string tipo char de dimensión 9, y se introducen por ejemplo 1234567.
como se podría completar el numero con ceros en la izquierda y que lo imprima?
es decir, quiero que me imprima 001234567. para que los "0" completen la dimensión del vector.
GRACIAS!!!!
Lo tienes que hacer tu mismo a mano, asi que toca darle una pensada al asunto :).
Lo que podrías hacer es...
int variable;
variable=srtlen(string);
int i;
for(i=variable;i
Ya lo he hecho, y funciona, he cambiado algunas cosas que estaban mal, si tienes alguna duda, pregúntame, no soy un experto, yo también voy por este vídeo, pero al igual puedo ayudarte en algo!!...
:
#include
#include
void ChangeString(char srt[9]);
int main(){
char str1[9];
printf("Introduce prhase to str1
");
fgets(str1,9,stdin);
ChangeString(str1);
puts(str1);
system("pause");
return 0;
}
void ChangeString(char str[9]){
int lengh;
lengh=strlen(str);
printf("Lengh value is: %i.
",lengh);
int i;
for(i=lengh-1;i
A la hora de hacer el printf para que te imprima los 7 números del vector añades 010 entre el % y la s. Ejemplo:
1º- introduces los 7 valores al vector[10] con fgets
2º-y luego imprimes los valores así: printf(''%010s'',vector);
Que te parece un ejercicio que sea de hacer un programa que detecte si un numero es capicua o una frase es un polidromo, lo he intentado un monton de veces pero nunca me sale.
//Saber si un número es capicúa
#include
int main(){
int v[5];
int i, aux;
aux=0;
for(i=0; i
Disculpa, me gustaría tener el PDF de las funciones mas importantes de strings, me sale que hay un error en el dropbox o que se ha borrado, aun lo tienes a los archivos? Me ha sido muy util hasta ver todos los videos, espero que siga genial todo.
Saludos y agradeceré tu respuesta a mi pedido.
me hubiera gustado que convirtiera a mayusculas con tildes
Que tal amigo? El archivo donde están las funciones de String ya no se encuentra, podrías subirlo nuevamente? Saludos desde Venezuela.
Hola como se elimina un espacio en blanco, m e lo pusieron en el examen y casi nadie lo hizo.
Y además te falta otra función strstr, no la entiendo.
bueno seria:
for(condicion){
if(str[i] = ' ';){// comillas simples con un espacio dentro
str[i] = '';//comillas simples con nada dentro
}
}
//Strings
#include
#include
int main (){
char c[] = "Hola como va";
leer (c);
system ("pause");
return 0;
}
void leer (char c[]){
int i,max;
max = strlen(c);
for (i = 0; i < max; i++){
c[i];
if (c[i] != ' '){
printf ("%c",c[i]);
}
}
printf ("
");
}
Escribí este código y sucede algo MISTERIOSO en el renglón 8 y el renglón 24 (los renglones de cuando lo ejecutás):
#include
#include
int main()
{
char frase[27], i;
for(i=0; i
Hola, que tal si haces un vídeo en el que a cada letra de una frase se le asigne un numero y este numero después se convierta a binario. Gracias
no entendi la uitilidad de la funcion cambio, para que sirve??
el primero verdad?
@@crisdaxmusicinfinity6807 amigo ya soy ingeniero queres q te ayude en algo?
@@charly-ic2dd uhyy si por favor ,es que tengo una actividad que estoy estancado Tengo que un usuario ponga su nombre o apellido y de esos sacar sus iniciales : eje: camilo torres y debe salir : Ct , se el código para que el usuario escriba su nombre y apellido pero no se como que el carácter inicial tanto el del nombre y el del apellido salgan.... si me ayudas muchas gracias.
y debo utilizar string
@@crisdaxmusicinfinity6807 amigo era broma , actualmente trabajo de uber :(
@@charly-ic2dd kheeee, y que paso ?
hola, disculpem, que estoy haciendo mal?? gracias
#include
#include
void fo(char f[]);
int main(){
char fo[] = "Frase original";
// printf("Ahora quitaremos el espacio y lo cambiaremos por un enter");
cambio(fo);
printf("Resultado: %s",fo);
system("pause");
return 0;
}
void fo(char f[]){
int longitud,i;
longitud=strlen(f);
for(i=0;i
+Leonel Cruz tu if() no tiene { }, ni tu for.
creo que no son necesarios
+Leonel Cruz Llego tarde pero por si a alguien le sirve:
Tu "void fo(char f[])" debería ser "void cambio(char f[])" ya que la función se llama "cambio".
Maestro, primero que nada... Sé cuanto te jode que te molestemos por aca, pero sobre los PDF con ejercicios que venis dejando (que son muy buenos por cierto, no hay mejor manera de aprender a programar que programando), el ultimo que dejaste, en el ejercicio 22 el de los palíndromos... Me sale/salió checkear palabras palíndromas; pero cuando trato de hacer que "checkee" frases palíndromas al momento de querer sacar los espacios del medio (lo logro con una función) y al compararlos (con stricmp/strcmpi) pareciera que el sacarle los espacios me jode su memoria y al momento de compararlos aunque se vean iguales luego de invertir y sacar espacios me los toma como que son distintos.
Mi pregunta sin más es, no hacer un video si no queres, pero si pudieras al menos postear/responderme con una hojita PDF o un archivo ".c" o algo, la resolución del problema, ya que hasta busqué en internet como media hora, pero nadie se calienta en frases palíndromas, te muestran solo palabras. Gracias por los videos por cierto, sos el mejor!! +Empieza A Programar
+Alan Randsom Al final lo solucione, el problema era que al invertir me invertia el \0; y por eso quedaba distinto el string. Aunque ahora que lo pienso tambien en lugar de invertir y comparar, podria haber hecho una funcion que tenga dos variables numericas, una 0 y la otra el length del string; e ir subiendo la primera y bajando la segunda e ir comparando si cada char es igual a su opuesto. Pero baah el invertirlos me sirvio para aprender supongo.
Por cierto el problema lo soluciones poniendo en la condicional que " string[i] != '\0' " cosa que deje ese caracter donde estaba... Por si alguien esta teniendo el mismo problema.