Change a text value using a C pointer

Asked

Viewed 981 times

0

I need to change the values of the variables through their pointers but I’m not getting.

#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 variables such as int and float, but kind char returns without any content and no longer know how to proceed.

  • There is no error, what is wrong is something else, it is not formatting correctly: https://ideone.com/XB3bOl

  • It shows the "B"?

  • For me gave a Warning in the compilation in the printf line, it seems to have lacked a %c.

  • Did the answer solve your question? Do you think you can accept it? See [tour] if you don’t know how you do it. This would help a lot to indicate that the solution was useful for you. You can also vote on any question or answer you find useful on the entire site (when you have 15 points).

  • Helped a lot, doubt healed.

2 answers

2

There is no error in the assignment, it is correct, like the others, the error is in formatting the printing of characters. The printf() awaits the "%c" to print a data of the type char or another compatible that you want to print as text. Both are missing. I took advantage 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);
}

Behold working in the ideone. And in the repl it.. Also put on the Github for future reference.

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

  • Maniero understood what was missing. thanks for the help

1

You missed your last printf that displays the message: O valor de z antes da modificao eh the %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;
}
  • Thanks for the help man .... is working

Browser other questions tagged

You are not signed in. Login or sign up in order to post.