Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

zeke

incompatible types in assignment of `const char[17]' to `char[30]&

Recommended Posts

Ai pessoal, tow precisando mt da ajuda de vcs. Na aula de ontem, o professor passou esse programinha aki...dai naum rodou...e nem ele sabe o pq...Se alguém puder me ajudar.. ele da o seguinte : incompatible types in assignment of `const char[17]' to `char[30]' na linha em q se atribue um valor para a variavel Aluno1.nomeme Ajudem !!!#include<stdio.h>#include<stdlib.h>//Ponteiros P/ Manipulação de ArquivosFILE *arquivo1,*arquivo2;//Estrutura Alunotypedef struct Dados_Aluno{ char nome[30]; char idade[1]; char sexo[10]; int matricula; char serie; }Dados_aluno; //Começo do Programachar * foo(){ char *a = "bla"; return a;} int main(void){ arquivo1=fopen("leitura.txt","r"); arquivo2=fopen("escrita.txt","w"); Dados_Aluno Aluno1; Aluno1.nome="um nome qualquer"; Aluno1.idade=22; Aluno1.sexo="Masculino"; Aluno1.matricula=7711689; Aluno1.serie=5; printf(arquivo2,"%c",Aluno1.nome); printf(arquivo2,"%c",Aluno1.idade)idade; printf(arquivo2,"%c",Aluno1.sexo); printf(arquivo2,"%d",Aluno1.matricula); printf(arquivo2,"%c",Aluno1.serie); fclose(arquivo2); return(0);}Desde Já agradeço a quem me ajudarValeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

incompatible types in assignment of `const char[17]' to `char[30]'
Na verdade este não é o único problema.

 

No início você faz um typedef definindo struct Dados_Aluno como Dados_aluno e depois chama Dados_Aluno, isto vai gerar um erro já que C é case sensitive.

Aluno1.nome="um nome qualquer";
Aqui está dando este problema porque você está tentando colocar um const char[17] ("um nome qualquer") num char[30] de uma forma errada.

Tente usar a strcpy da string.h, ficaria algo como strcpy(Aluno1.nome, "um nome qualquer");

Aluno1.idade=22;
Aqui vai dar erro já que você definiu char idade[1];, como você quer colocar um int lá?

Aluno1.serie=5;
serie é um char, então deve ficar entre aspas simples.

printf(arquivo2,"%c",Aluno1.nome);printf(arquivo2,"%c",Aluno1.idade)idade;printf(arquivo2,"%c",Aluno1.sexo);printf(arquivo2,"%d",Aluno1.matricula);printf(arquivo2,"%c",Aluno1.serie);
Esta não é a forma de utilizar a função printf, você deveria colocar o fprintf no lugar.

Nem tudo é %c também, você deve verificar onde mudar para %s (string) para imprimir corretamente.

 

Duvido muito que realmente seu professor não tenha encontrado os erros neste programa (se isso for verdade você deveria cogitar mudar de faculdade). Mas está aí uma ajuda, fiz às pressas então não chequei tudo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara..valeu pela ajuda..com algumas alterações funcionou beleza..Ah..por incrivel q pareça ta identico ao q o professor passou pra gente...dizendo inclusive que tinha rodado o programa e funcionado...q naum sabia o pq do erro..mas enfim..obrigado pela ajuda...t +

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.