Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ************************************************************
- //
- // T3 - Programacao Baixo nivel
- // GUILHERME GIROTTO E ARTUR TRAPP
- //
- // ************************************************************
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- #define TRUE 1
- // define a estrutura do nodo de palavras
- typedef struct Temp{
- char const *info;
- struct Temp *prox;
- }TNODOPAL;
- // define a estrutura do nodo de ponteiros
- typedef struct TempPont{
- TNODOPAL const *pont;
- struct TempPont *prox;
- }TNODOPONT;
- // cria o inicio das listas
- TNODOPAL *inicioPal=NULL;
- TNODOPONT *inicioPont=NULL;
- // escreve o arquivo binário das listas
- void escreveBinario(){
- TNODOPAL *nodo = inicioPal;
- FILE *fp;
- char const *pal = nodo->info;
- fp = fopen( "binary.dat" , "wb" );
- while(nodo != NULL){
- fwrite (&pal, sizeof(char) * 30, 200, fp);
- nodo = nodo->prox;
- }
- fclose(fp);
- }
- TNODOPAL *p;
- TNODOPONT *ponteiro;
- void InserePalavra(char dado[]);
- int InserePonteiro(TNODOPAL *p);
- // Funcao que insere um elemento na lista de palavras.
- void InserePalavra(char dado[]){
- p = (TNODOPAL *) malloc(sizeof(TNODOPAL));
- if (p==NULL)
- {
- printf("Erro de alocacao\n");
- return;
- }
- p->info = dado;
- p->prox = NULL;
- if (inicioPal==NULL)
- inicioPal = p;
- else {
- p->prox = inicioPal;
- inicioPal = p;
- }
- InserePonteiro(p);
- }
- // Funcao que insere um ponteiro na lista de ponteiros
- int InserePonteiro(TNODOPAL *p){
- ponteiro = (TNODOPONT *) malloc(sizeof(TNODOPONT));
- if (ponteiro==NULL)
- {
- printf("Erro de alocacao\n");
- return 0;
- } else if(p == NULL){
- printf("Lista de Palavras vazia!\n");
- }
- ponteiro->pont = p;
- ponteiro->prox = NULL;
- if (inicioPont==NULL)
- inicioPont = ponteiro;
- else {
- ponteiro->prox = inicioPont;
- inicioPont = ponteiro;
- }
- return 1;
- }
- // Funcao que imprime a lista de palavras
- void ImprimePalavras(){
- TNODOPAL *ptr;
- if (inicioPal == NULL)
- {
- printf("--- Lista Vazia ---\n\n");
- return;
- }
- // Caso a lista nao esteja vazia
- ptr = inicioPal;
- printf("--- Inicio da Lista de Palavras ---\n\n");
- while (ptr !=NULL) {
- printf("Info = %s\n",ptr->info);
- ptr = ptr->prox;
- }
- printf("--- fim da lista ---\n\n");
- }
- // Funcao que imprime a lista de ponteiros
- void ImprimePonteiros(){
- TNODOPONT *ptr;
- if (inicioPont == NULL)
- {
- printf("--- Lista Vazia ---\n\n");
- return;
- }
- // Caso a lista nao esteja vazia
- ptr = inicioPont;
- printf("--- Inicio da Lista com base nos Ponteiros ---\n\n");
- while (ptr !=NULL) {
- printf("Info = %p\n",ptr->pont);
- ptr = ptr->prox;
- }
- printf("--- fim da lista ---\n\n");
- }
- // Funcao que busca um elemento na lista de Palavras.
- int BuscaDado(char const *dado){
- TNODOPAL *ptr;
- if (inicioPal == NULL)
- {
- return 0; // Lista Vazia
- }
- // Caso a lista nao esteja vazia
- ptr = inicioPal;
- while (ptr !=NULL) {
- if (strcmp (ptr->info, dado) == 0)
- return 1; // retorna um ponteiro para
- //o inicio da lista
- else ptr = ptr->prox;
- }
- return 0;
- }
- // Seleicona as palavras, verifica a ocorrencia, insere palavras na lista de palavras
- // e imprime a lista de palavras e de ponteiros
- void selecionaPalavras(FILE *file){
- char *palavra = (char *) malloc(sizeof(char) * 30);
- int aux;
- ImprimePalavras();
- ImprimePonteiros();
- }
- //Main
- int main()
- {
- //char *nomeArquivo;
- //nomeArquivo = malloc(sizeof(char) * 20);
- //printf("Digite o nome do arquivo a ser aberto:");
- //scanf("%s", nomeArquivo);
- FILE *file;
- file = fopen("/Users/guilhermegirotto/Desktop/Trabalho C/arquivo.txt" , "r");
- if(file == NULL){
- printf("Arquivo n‹o encontrado!\n");
- return 0;
- }
- selecionaPalavras(file);
- escreveBinario();
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement