Olá, estou iniciando meus estudos com a linguagem C e me deparei com um pequeno problema que está me dando uma dor de cabeça!
Basicamente preciso que o usuário digite um nome, por exemplo, José Maria. Este nome deve ser jogado para dentro de uma variável A, só que como eu fiz, apenas a letra J vai para dentro da variável.
Segue abaixo o algoritmo;
#include<stdio.h>
int cont,p1,p2;
float n1,n2,mp;
char a;
main()
{
p1=1;
p2=2;
cont=1;
while(cont<4)
{
cont=cont+1;
printf("\nEntre com o nome do aluno: ");
scanf("%s",&a);
printf("\nEntre com a nota A: ");
scanf("%f",&n1);
printf("\nEntre com a nota B: ");
scanf("%f",&n2);
mp=(n1*p1+n2*p2)/(p1+p2);
printf("\nO aluno %s tem média: %f\n",a,mp);
}
}
Quando compilo o algoritmo aparece o seguinte erro:
e3.c: In function ‘main’:
e3.c:20: warning: format ‘%s’ expects type ‘char *’, but argument 2 has type ‘int’
Se eu mudar o parâmetro %s para %c funciona, mas acontece o que falei alí encima, apenas a primeira letra do nome é jogada para dentro da variável.
Então decidi pesquisar um pouco e encontrei isso aqui:
#include <stdio.h>
int main()
{
char str[20];
scanf("%s",str);
printf("A string digitada foi: %s\n", str);
return 0;
}
Neste exemplo, na hora da definição da variável, basta definir um número máximo de caracteres.Só que quando defino esse número, por exemplo char A[20], o seguinte erro aparece:
e3.c: In function ‘main’:
e3.c:14: warning: format ‘%s’ expects type ‘char *’, but argument 2 has type ‘char (*)[20]’
A partir daqui já não encontrei mais nada. Caso alguém possa me dar uma forcinha, agradecería, pois é um trabalho avaliado :/
Pergunta
Italoo
Olá, estou iniciando meus estudos com a linguagem C e me deparei com um pequeno problema que está me dando uma dor de cabeça!
Basicamente preciso que o usuário digite um nome, por exemplo, José Maria. Este nome deve ser jogado para dentro de uma variável A, só que como eu fiz, apenas a letra J vai para dentro da variável.
Segue abaixo o algoritmo;
#include<stdio.h>
int cont,p1,p2;
float n1,n2,mp;
char a;
main()
{
p1=1;
p2=2;
cont=1;
while(cont<4)
{
cont=cont+1;
printf("\nEntre com o nome do aluno: ");
scanf("%s",&a);
printf("\nEntre com a nota A: ");
scanf("%f",&n1);
printf("\nEntre com a nota B: ");
scanf("%f",&n2);
mp=(n1*p1+n2*p2)/(p1+p2);
printf("\nO aluno %s tem média: %f\n",a,mp);
}
}
Quando compilo o algoritmo aparece o seguinte erro:
e3.c: In function ‘main’:
e3.c:20: warning: format ‘%s’ expects type ‘char *’, but argument 2 has type ‘int’
Se eu mudar o parâmetro %s para %c funciona, mas acontece o que falei alí encima, apenas a primeira letra do nome é jogada para dentro da variável.
Então decidi pesquisar um pouco e encontrei isso aqui:
#include <stdio.h>
int main()
{
char str[20];
scanf("%s",str);
printf("A string digitada foi: %s\n", str);
return 0;
}
Neste exemplo, na hora da definição da variável, basta definir um número máximo de caracteres.Só que quando defino esse número, por exemplo char A[20], o seguinte erro aparece:
e3.c: In function ‘main’:
e3.c:14: warning: format ‘%s’ expects type ‘char *’, but argument 2 has type ‘char (*)[20]’
A partir daqui já não encontrei mais nada. Caso alguém possa me dar uma forcinha, agradecería, pois é um trabalho avaliado :/
Valeu galera, abraço!
Link para o comentário
Compartilhar em outros sites
19 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.