duvida iniciante -super basico [RESOLVIDO]

1. duvida iniciante -super basico [RESOLVIDO]

Carlos Cavalcante
Cavalca

(usa openSUSE)

Enviado em 27/06/2017 - 08:45h

No programa abaixo, existem certas "colocacoes", as quais eu nao entendo, Como por exemplo:
1) Porque o programador, colocou esta informacao "#define MAXCHAR 80" antes de comecar o programa, fora da funcao (nao podia declarar dentro da funcao main?) e deu o valor 80, pois quando eu o altero, nada acontece?
2)Em "guardaChar[contfor-1]", o que "confor - 1" faz?

Obrigado.


#include <stdio.h>
#include <stdlib.h>
#define MAXCHAR 80

int main()
{
char guardaChar[MAXCHAR];
char teste = 'q';
int contador = 0;
int contfor;
do{
printf("Entre com a letra e aperte enter, 'x' sai.\n");
scanf(" %c", &guardaChar[contador]);
if(guardaChar[contador] != 'x'){
contador++;
}
}while( guardaChar[contador]!= 'x');
system("cls");//windows
//system("clear")//linux
for(contfor=0; contfor<=contador; contfor++){
printf("\t\t\t\t%c \n", guardaChar[contfor-1]);
}
return 0;
}



  


2. Re: duvida iniciante -super basico

???
gokernel

(usa Linux Mint)

Enviado em 27/06/2017 - 08:59h

Olá !

Isso em C se chama: macro

#define MAXCHAR 80


Macro em C é muito usado para "automatizar" ... basta apenas redefinir o valor do macro e todo o código será mudado.

Imagine você usar o número ( 80 ) em vários lugares no código e depois ter que mudar ( um por um ) ... basta criar a macro ( MAXCHAR ), usar no código em vários lugares ... e modificar apenas o valor da macro ( MAXCHAR ) e todo o código mudará.


Esse seu código o compilador entende como se fosse assim:

#define MAXCHAR 80

int main()
{
char guardaChar [ 80 ];
}


Entendido ?


3. duvida iniciante -super basico

Carlos Cavalcante
Cavalca

(usa openSUSE)

Enviado em 27/06/2017 - 09:36h

Mas brother, entao neste caso, no qual o programa eh pequeno, nao faz muito sentido criar este [MAXCHAR] na linha como #define, neh? E pra que serve o 80?? Mudei para varios valores (como 5 por exemplo), e continuou rodando igual.

Obrigado


4. Re: duvida iniciante -super basico

???
gokernel

(usa Linux Mint)

Enviado em 27/06/2017 - 10:18h


Mas brother, entao neste caso, no qual o programa eh pequeno, nao faz muito sentido criar este [MAXCHAR] na linha como #define, neh? E pra que serve o 80?? Mudei para varios valores (como 5 por exemplo), e continuou rodando igual.

1: Mas brother, entao neste caso, no qual o programa eh pequeno, nao faz muito sentido criar este [MAXCHAR] na linha como #define, neh?

Correto !

2: E pra que serve o 80?? Mudei para varios valores (como 5 por exemplo), e continuou rodando igual.
a: Você na verdade está criando uma "string" com no máximo ( 80 char ) .

Cuidado para não tentar "escrever/ler" nessa "string" se ultrapassar esse valor de 80.

Um exemplo de um programa errado ...

#include <stdio.h>
#include <string.h>

char string[10]; // tamanho maximo de 10 char.

int main (void)
{
//---------------------------------------------------
// COPIA UM "TEXTO" PARA UMA VARIAVEL ( string ):
// PROTOTIPO DA FUNCAO: char * strcpy ( char * destination, const char * source );
//---------------------------------------------------
// ERRO AQUI: nunca fazer isso ...
// lembre-se: a variavel ( string ) tem um tamanho de no maximo 10. OK ?
//---------------------------------------------------
strcpy (string, "Hello_World_test"); // copia mais do que deveria ...

printf ("STRING(%s)\n", string);

return 0;
}


Talvez esse programa execute corretamente ... MAS NUNCA ESPERE POR ISSO. ;)


"string" em C também é conhecido como: Vetor de caracteres ( char ).








Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts