[ Foro de C ]

Problemas con C strcmp

03-Dec-2022 12:54
Invitado (i02matog)
1 Respuestas

Buenas, estoy teniendo problemas para resolver un problema que tengo:

while(fscanf(f, "%s\n", cadena)!=EOF){
       int tamano=sizeof(cadena);
       int mitad=tamano/2;
       for(int i=mitad; i<=(tamano-1); i++){
           for(int j=0; j<=(mitad-1);j++){
               if(cadena[i]==cadena[j]){
                   letra=cadena[i];
                   int puntuacionindividual=0;
                   if(letra=="a"){puntuacionindividual=1;}
                   if(letra=="b"){puntuacionindividual=2;}
                  ...
No puede igualar letra con la letra a, me da error. Lo he intentado con if(strcmp(letra, "a")==0) pero tampoco ha dado resultado. ¿Alguno sabe la respuesta? Gracias de antemano.


06-Dec-2022 02:10
Invitado (pipe)

Hola matog

el problema que tienes es que las comillas dobles denotan una cadena y las simples son para caracteres individuales, por lo que `if(letra=="a")` deberías ponerlo como `if(letra=='a')`, con comillas simples

no se que pretendes hacer en el programa pero:

- si quieres leer línea por línea deberías usar algo como

  while(fscanf(fichero, "%[^\n] ", contendor) != EOF)


- `i<=(tamano-1)` es igual que `i<tamano` y lo mismo para `j<=(mitad-1)`

- si quieres puntuar las minúsculas podrías hacer algo como

 if(letra >= 'a' && letra <= 'z')
 {
     puntuacionindividual = letra - 'a' + 1;
 }

suerte ;-)

 






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)