Dev - C++ - Problemas al igualar char con "a"

 
Vista:

Problemas al igualar char con "a"

Publicado por i02matog (1 intervención) el 03/12/2022 13:05:06
Buenas. Tengo problemas con el código en C.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
int main(){
    int suma=0;
    char letra;
    char nombre[32]="code.txt";
    FILE* f;
    if((f=fopen(nombre, "r"))==NULL){
        printf("ERROR al abrir el fichero\n");
        exit(0);
    }
    fclose(f);
 
    f=fopen(nombre, "r");
    char cadena[256];
    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;}
                    if(letra=="c"){puntuacionindividual=3;}
                    if(letra=="d"){puntuacionindividual=4;}
                    if(letra=="e"){puntuacionindividual=5;}

Tengo este código, he intentado tanto con (strcmp(letra, "a")==0) y con otro tipo de intentos fallidos. Si alguien me puede ayudar. Gracias de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Problemas al igualar char con "a"

Publicado por Yamil Bracho (1 intervención) el 03/12/2022 14:30:33
La comparacion debe ser de char a char. Cuando haces "a" es un string y que en este caso son dos bytes, el codigo ascii para la "a" y el null.
La comparacion debe ser if(letra=='a') o tambien if(letra==97)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar