Autor
|
Tema: problema con busqueda de silabas ( letra mayuscula) (Leído 6,068 veces)
|
manutmac
Desconectado
Mensajes: 13
|
Tengo el codigo de ahi abajo, mi problema es que al ser nombres propios la primera letra va con mayuscula y cuando hago la busqueda por ejemplo con mu no me aparece Muhittin( uno de los nombres ) que es lo que deberia pasar. Gracias #include <stdio.h> #include <string.h> int main() { const char *const pnames[200] = aqui aparecen 200 nombres propios; int i; for (i = 0; i < 200; i++) { char primera_letra = pnames int longitud_nombre = strlen( pnames ); char ultima_letra = pnames[ longitud_nombre -1 ];
printf("Elemento %i: %s, Primera letra: %c, ultima %c\n", i+1, pnames, primera_letra, ultima_letra ); }
char cadena_busqueda[4]; printf("Introduzca cadena para buscar: "); scanf("%3s", cadena_busqueda);
for (i = 0; i < 200; i++) {
char* v; v = strstr(pnames, cadena_busqueda); if (v != NULL) printf("Silaba %s encontrada en %s\n", cadena_busqueda, pnames); }
return 0;
}
|
|
|
En línea
|
|
|
|
Ferno
Desconectado
Mensajes: 375
|
Bueno, hay funciones como "toupper(int)" que convierten las letras minúsculas en mayúsculas (y, BTW, tolower(int), convierte mayúsculas a minúsculas). Fijate cómo utilizarlas para fácilmente modificar tu código! Saludos
|
|
|
En línea
|
|
|
|
BatchianoISpyxolo
Desconectado
Mensajes: 166
|
No he mirado el código ni nada. Pero por lo que dices, seguro que hay alguna función en string.h que sirva para pasar una cadena de caracteres a minúsculas: estilo lowercase o a mayúsculas como uppercase. Existe la función: short stricmp (const unsigned char *s1, const unsigned char *s1);
Que es insensible a may y minus.
|
|
|
En línea
|
|
|
|
do-while
Desconectado
Mensajes: 1.276
¿Habra que sacarla de paseo?
|
No he mirado el código ni nada. Pero por lo que dices, seguro que hay alguna función en string.h que sirva para pasar una cadena de caracteres a minúsculas: estilo lowercase o a mayúsculas como uppercase. Existe la función: short stricmp (const unsigned char *s1, const unsigned char *s1);
Que es insensible a may y minus. No, en la libreria estandar de C no tienes funciones que manejen cadenas ignorando el caso, y stricmp no forma parte ni de string.h ni del resto de la libreria estandar de C. Como bien ha dicho Ferno, tienes que utilizar toupper y tolower para hacer comparaciones cambiando el caracter a mayusculas o minusculas, o directamente modificar las cadenas con estas funciones para cambiar el caso de los caracteres que las forman. ¡Saludos!
|
|
|
En línea
|
- Doctor, confundo los números y los colores. - Vaya marrón. - ¿Marrón? ¡Por el culo te la hinco!
|
|
|
rir3760
Desconectado
Mensajes: 1.639
|
Otra opción es crear una función propia que compare las cadenas sin distinguir mayúsculas de minúsculas. Por ejemplo: #include <ctype.h> int stricmp(char const *s, char const *t) { s++; t++; } }
Un saludo
|
|
|
En línea
|
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly. -- Kernighan & Ritchie, The C programming language
|
|
|
BatchianoISpyxolo
Desconectado
Mensajes: 166
|
The stricmp function is available for C++ programs. It is available for C only when the program defines the __cplusplus__strings__ macro.
:\
|
|
|
En línea
|
|
|
|
rir3760
Desconectado
Mensajes: 1.639
|
Si ese texto lo copiaste de esta pagina, cito: stricmp() - Compare Strings without Case Sensitivity
Format
#include <string.h> int stricmp(const char *string1, const char *string2);
Note: The stricmp function is available for C++ programs. It is available for C only when the program defines the __cplusplus__strings__ macro.
Language Level: Extension En ella se indica claramente que esa función es una extension y estas no forman parte de las bibliotecas estándar de C y C++ (su disponibilidad depende del compilador). Un saludo
|
|
|
En línea
|
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly. -- Kernighan & Ritchie, The C programming language
|
|
|
|
manutmac
Desconectado
Mensajes: 13
|
muchas gracias a todos di con la solucion con vuestros consejos!
|
|
|
En línea
|
|
|
|
Jomad205
Desconectado
Mensajes: 6
|
Buenas, de antemano pedire disculpas ya que aun soy un novicio en esto del C y tengo la sensación de que lo que te voy a decir no te servirá para nada. Leí que en ascii al tener cada caracter una numeracion independiente, la manera de pasar de minusculas a mayusculas era restandole 32 , y viceversa. Por ejemplo: main() { int c; { if(c>='a' && c<='z') c-=32; } }
/* Eso debería cambiarte los caracteres que introduzcas y sean minúsculas , exclusivamente las minúsculas, a letras mayúsculas */ Bueno , si no te sirve de nada lo lamento ya que aun no estoy al nivel de la mayoría de lo que por aquí se habla. ¡Un saludo!
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Duda sobre almacenar palabra letra a letra
.NET (C#, VB.NET, ASP)
|
Meyer900
|
5
|
9,918
|
27 Septiembre 2008, 19:59 pm
por SeniorX
|
|
|
Seperar en silabas
Programación Visual Basic
|
<[(x)]>
|
3
|
8,199
|
8 Diciembre 2009, 06:45 am
por MCKSys Argentina
|
|
|
Google tipo de letra en busqueda
Dudas Generales
|
Zorronde
|
1
|
4,231
|
1 Noviembre 2010, 01:02 am
por CloudswX
|
|
|
Codigo para colocar mayuscula en a primera letra de cada palabra de un texto....
Programación General
|
infolestk
|
4
|
9,326
|
1 Febrero 2011, 23:10 pm
por Littlehorse
|
|
|
[AYUDA] Problema con extensiones en mayuscula JPG - jpg de windows a la web
Desarrollo Web
|
Graphixx
|
1
|
4,484
|
11 Octubre 2012, 13:33 pm
por #!drvy
|
|