Heitor.rj
(usa Slackware)
Enviado em 07/06/2020 - 02:11h
alanp1 escreveu:
Fiz algumas modificações, ele executa, mas ainda apresenta esse erro:
atv6.c: In function ‘main’:
atv6.c:206:7: error: array size missing in ‘log’
char log[], sen[];
^~~
atv6.c:206:14: error: array size missing in ‘sen’
char log[], sen[];
^~~
atv6.c:213:11: warning: format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘char (*)[1]’ [-Wformat=]
scanf("%s", &log);
~^ ~~~~
atv6.c:215:11: warning: format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘char (*)[1]’ [-Wformat=]
scanf("%s",&sen);
Alan, vc precisa estudar mais sobre como declarar uma variável. Isso vai te ajudar muito, porque é a base para muito do que você irá fazer. Estude como declarar char, int, float, double...
Precisa claro também aprender a ler os erros do Compilador, porque ele já está informando tudo o que vc precisa para consertar o seu código e inclusive apontando onde vc escreveu errado! Com o tempo vai se acostumar a interpretar o que ele informa!
Compile sempre assim: Se passar por isso, seu código estará melhor, se não passar, precisa consertar!
gcc Test.c -o Test -O3 -Wall -pedantic -pedantic-errors -Werror
Consertei seu código adicionando as explicações de onde estava errado!
#include <stdio.h>
//#include <stdlib.h> // Não precisa disso!
#include <string.h>
int main(void) {
/* VOCÊ NÃO PODE DECLARAR ASSIM: Ou é um vetor de caracteres ou é 1 caracter! para declarar vetor já que vai armazenar um texto, vc precisa informar a Qtd de caracteres que esse texto terá!
Nessa situação seria bom vc estudar como declarar variáveis, vai te ajudar bastante! */
//char log[], sen[]; // ERRADO!
char log[101], sen[101]; // Declarei para 100 Caracteres
int key = 0;
char login[] = "admin";
char senha[] = "qwerty";
while(key == 0) {
printf("Digite o login: ");
// isso está bugado e não vai funcionar corretamente porque precisa tratar o lixo do Buffer
//scanf("%s", &log);
scanf("%100[^\n]", log); // Pega até 100 caracteres digitados
while(getchar() != '\n'); // Para Limpar o Buffer, ou seja, os caracteres restantes que foram ignorados no scanf
printf("Digite a senha: ");
// isso está bugado e não vai funcionar corretamente porque precisa tratar o lixo do Buffer
//scanf("%s",&sen);
scanf("%100[^\n]", sen); // Pega até 100 caracteres digitados
while(getchar() != '\n'); // Para Limpar o Buffer, ou seja, os caracteres restantes que foram ignorados no scanf
// Coloquei senha na frente para ficar na mesma ordem do login, pois estava invertido
if((strcmp(login, log) == 0) && (strcmp(senha, sen) == 0))
key = 1;
// Você também poderia declarar assim, sem usar as 2 variáveis que vc declarou acima, reduzindo a qtd de código escrito.
// if((strcmp("admin", log) == 0) && (strcmp("qwerty", sen) == 0))
}
printf("Logado com sucesso!!!\n");
}