Change a text value through pointer in C

0

I need to change the values of the variables through their pointers but I can not.

#include <stdio.h>
#include <stdlib.h>

//Programa principal
int main()
{//Declaração de variáveis e ponteiros
    int x = 0; int*p;
    float y = 0; float *l;  
    char z = 'B' ; char *m;

    //Apontamento de ponteiros
    p = &x;
    l = &y;
    m = &z;
    //Impressão dos valores antes da modificação
    printf("O valor de x antes da modificao eh : %d\n", x);
    printf("O valor de y antes da modificao eh : %f\n", y);
    printf("O valor de z antes da modificao eh : %\n", z);

    //Inserindo valores que os ponteiros devem alocar na memória das variáveis
    *p = 70;
    *l = 63.70;
    *m =  'A' ; //ERRO - Não consigo fazer a inserção do valor deste ponteiro em sua variável

    //Impressão dos valores após a modificação
    printf("O valor de x depois da modificao eh : %d\n", x);
    printf("O valor de y depois da modificao eh : %.2f\n", y);
    printf("O valor de z depois da modificao eh : % \n", z);

    //Fim do programa
    system("pause");
    return 0;
}

Note that I can change the values of the variables as int and float , but type char returns without any content and I do not know how to proceed.

    
asked by anonymous 26.11.2018 / 16:43

2 answers

2

There is no error in the assignment, it is correct, like the others, the error is in the formatting of the character print. printf() expects "%c" to print a char or compatible want to print as text. Both are missing. I took advantage of and improved some things and simplified the code, there is a lot of unnecessary.

#include <stdio.h>

int main() {
    int x = 0; int *p = &x;
    float y = 0; float *l = &y;  
    char z = 'B'; char *m = &z;
    printf("O valor de x antes da modificao eh : %d\n", x);
    printf("O valor de y antes da modificao eh : %.2f\n", y);
    printf("O valor de z antes da modificao eh : %c\n", z);
    *p = 70;
    *l = 63.70;
    *m = 'A';
    printf("O valor de x depois da modificao eh : %d\n", x);
    printf("O valor de y depois da modificao eh : %.2f\n", y);
    printf("O valor de z depois da modificao eh : %c\n", z);
}

See running on ideone . And no Coding Ground . Also put it in GitHub for future reference .

I take it to say that although it is an interesting exercise, the use of pointer in this way is discouraged because it has no purpose.

    
26.11.2018 / 17:01
1

Missing your last printf that displays the message: O valor de z antes da modificao eh o %c

#include <stdio.h>
#include <stdlib.h>

//Programa principal
int main()
{//Declaração de variáveis e ponteiros
    int x = 0; int*p;
    float y = 0; float *l;  
    char z = 'B' ; char *m;

    //Apontamento de ponteiros
    p = &x;
    l = &y;
    m = &z;
    //Impressão dos valores antes da modificação
    printf("O valor de x antes da modificao eh : %d\n", x);
    printf("O valor de y antes da modificao eh : %f\n", y);
    printf("O valor de z antes da modificao eh : %c\n", z); //Faltou o %c aqui 

    //Inserindo valores que os ponteiros devem alocar na memória das variáveis
    *p = 70;
    *l = 63.70;
    *m =  'A' ; //ERRO - Não consigo fazer a inserção do valor deste ponteiro em sua variável

    //Impressão dos valores após a modificação
    printf("O valor de x depois da modificao eh : %d\n", x);
    printf("O valor de y depois da modificao eh : %.2f\n", y);
    printf("O valor de z depois da modificao eh : %c\n", z); //Faltou o %c aqui 

    //Fim do programa
    system("pause");
    return 0;
}
    
26.11.2018 / 16:53