My code in C gives a crash displaying the following error:
name.exe stopped working
I do not know how to fix this. Here is the code I've already done:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct no{
int id;
char* nomeCompleto;
char* apelido;
char* partido;
char* cargo;
float valorPropina;
int qtdVezes;
//Partido* partido;
struct no* esq;
struct no* dir;
}No;
No* criarNo(int id, char* nomeCompleto, char* apelido, char* cargo, float valor, int qtdDeVezes){
No* no = (No*)malloc(sizeof(No));
/*
printf("id: ");
scanf("%d", no->id);
printf("Nome do politico: ");
gets(no->nomeCompleto);
printf("Apelido do politico: ");
gets(no->apelido);
printf("Cargo do politico: ");
gets(no->cargo);
printf("Valor da propina: ");
scanf("%d", no->valorPropina);
printf("qtd: ");
scanf("%d", no->qtdVezes); */
strcpy(no->nomeCompleto, nomeCompleto);
strcpy(no->apelido,apelido);
//p->partido = partido;
strcpy(no->cargo,cargo);
no->valorPropina = valor;
no->qtdVezes = qtdDeVezes;
no->id = id;
no->esq = NULL;
no->dir = NULL;
return no;
}
No* inserirPolitico(No* raiz, int id, char* nomeCompleto, char* apelido, char* cargo, float valor, int qtdDeVezes){
No* novo = criarNo(id, nomeCompleto, apelido, cargo, valor, qtdDeVezes);
if(raiz == NULL) return novo;
No* no = raiz;
No* pai = NULL;
while(no != NULL){
pai = no;
if(novo->id < no->id) no = no->esq;
else no = no->dir;
}
if(pai->id > novo->id) pai->esq = novo;
else pai->dir = novo;
return raiz;
}
/*
void salvarArquivo(No* no){
salvarArquivo(no->esq);
FILE* file;
file = fopen("ed.txt", "w");
salvaItem(no, file);
fclose(file);
salvarArquivo(no->dir);
}
void salvaItem (No* p, FILE *file){
if(p->esq)salvaItem(p->esq,file);
fprintf(file, "%d %s %s %s %d %d\n", p->id, p->nomeCompleto, p->apelido, p->cargo, p->valorPropina, p->qtdVezes);
if(p->dir)salvaItem(p->dir,file);
}
*/
void imprimirOrdem(No* raiz){
if(raiz != NULL){
imprimirOrdem(raiz->esq);
FILE* file;
file = fopen("ed.txt", "w");
//printf("%d - ", raiz->chave);
fprintf(file, "%d %s %s %s %2f %d\n", raiz->id, raiz->nomeCompleto, raiz->apelido, raiz->cargo, raiz->valorPropina, raiz->qtdVezes);
fclose(file);
imprimirOrdem(raiz->dir);
}
}
int main(){
No* no = (No*) malloc(sizeof(No));
no->nomeCompleto = malloc(sizeof(char));
no->apelido = malloc(sizeof(char));
no->cargo = malloc(sizeof(char));
/*
printf("id: ");
scanf("%d", no->id);
printf("Nome do politico: ");
gets(no->nomeCompleto);
// scanf("s", no->nomeCompleto);
printf("Apelido do politico: ");
gets(no->apelido);
//scanf("s", no->apelido);
printf("Cargo do politico: ");
gets(no->cargo);
//scanf("s", no->cargo);
printf("Valor da propina: ");
scanf("%d", no->valorPropina);
printf("qtd: ");
scanf("%d", no->qtdVezes);
inserirPolitico(no, no);
imprimirOrdem(no);
*/
no->nomeCompleto = "sSASs";
no->apelido = "scscscs";
no->cargo ="ddd";
no->id = 1;
no->valorPropina = 22.0;
no->qtdVezes =2;
inserirPolitico(no, no->id, no->nomeCompleto, no->apelido, no->cargo, no->valorPropina, no->qtdVezes );
imprimirOrdem(no);
return 0;
}