Advertisement
Guest User

Untitled

a guest
Nov 25th, 2015
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.14 KB | None | 0 0
  1. // ************************************************************
  2. //
  3. // T3 - Programacao Baixo nivel
  4. // GUILHERME GIROTTO E ARTUR TRAPP
  5. //
  6. // ************************************************************
  7. #include <stdio.h>
  8. #include <string.h>
  9. #include <stdlib.h>
  10. #define TRUE 1
  11.  
  12. // define a estrutura do nodo de palavras
  13.  
  14. typedef struct Temp{
  15. char const *info;
  16. struct Temp *prox;
  17. }TNODOPAL;
  18.  
  19. // define a estrutura do nodo de ponteiros
  20.  
  21. typedef struct TempPont{
  22. TNODOPAL const *pont;
  23. struct TempPont *prox;
  24. }TNODOPONT;
  25.  
  26. // cria o inicio das listas
  27. TNODOPAL *inicioPal=NULL;
  28. TNODOPONT *inicioPont=NULL;
  29.  
  30. // escreve o arquivo binário das listas
  31. void escreveBinario(){
  32.  
  33. TNODOPAL *nodo = inicioPal;
  34.  
  35. FILE *fp;
  36. char const *pal = nodo->info;
  37.  
  38. fp = fopen( "binary.dat" , "wb" );
  39.  
  40. while(nodo != NULL){
  41. fwrite (&pal, sizeof(char) * 30, 200, fp);
  42. nodo = nodo->prox;
  43. }
  44. fclose(fp);
  45.  
  46. }
  47.  
  48. TNODOPAL *p;
  49. TNODOPONT *ponteiro;
  50. void InserePalavra(char dado[]);
  51. int InserePonteiro(TNODOPAL *p);
  52.  
  53. // Funcao que insere um elemento na lista de palavras.
  54.  
  55. void InserePalavra(char dado[]){
  56.  
  57. p = (TNODOPAL *) malloc(sizeof(TNODOPAL));
  58. if (p==NULL)
  59. {
  60. printf("Erro de alocacao\n");
  61. return;
  62. }
  63.  
  64. p->info = dado;
  65. p->prox = NULL;
  66.  
  67. if (inicioPal==NULL)
  68. inicioPal = p;
  69. else {
  70. p->prox = inicioPal;
  71. inicioPal = p;
  72. }
  73. InserePonteiro(p);
  74. }
  75.  
  76. // Funcao que insere um ponteiro na lista de ponteiros
  77.  
  78. int InserePonteiro(TNODOPAL *p){
  79.  
  80. ponteiro = (TNODOPONT *) malloc(sizeof(TNODOPONT));
  81. if (ponteiro==NULL)
  82. {
  83. printf("Erro de alocacao\n");
  84. return 0;
  85. } else if(p == NULL){
  86. printf("Lista de Palavras vazia!\n");
  87. }
  88.  
  89. ponteiro->pont = p;
  90. ponteiro->prox = NULL;
  91.  
  92. if (inicioPont==NULL)
  93. inicioPont = ponteiro;
  94. else {
  95. ponteiro->prox = inicioPont;
  96. inicioPont = ponteiro;
  97. }
  98. return 1;
  99. }
  100.  
  101. // Funcao que imprime a lista de palavras
  102.  
  103. void ImprimePalavras(){
  104.  
  105. TNODOPAL *ptr;
  106. if (inicioPal == NULL)
  107. {
  108. printf("--- Lista Vazia ---\n\n");
  109. return;
  110. }
  111. // Caso a lista nao esteja vazia
  112. ptr = inicioPal;
  113. printf("--- Inicio da Lista de Palavras ---\n\n");
  114. while (ptr !=NULL) {
  115. printf("Info = %s\n",ptr->info);
  116. ptr = ptr->prox;
  117. }
  118. printf("--- fim da lista ---\n\n");
  119. }
  120.  
  121. // Funcao que imprime a lista de ponteiros
  122.  
  123. void ImprimePonteiros(){
  124. TNODOPONT *ptr;
  125. if (inicioPont == NULL)
  126. {
  127. printf("--- Lista Vazia ---\n\n");
  128. return;
  129. }
  130. // Caso a lista nao esteja vazia
  131. ptr = inicioPont;
  132. printf("--- Inicio da Lista com base nos Ponteiros ---\n\n");
  133. while (ptr !=NULL) {
  134. printf("Info = %p\n",ptr->pont);
  135. ptr = ptr->prox;
  136. }
  137. printf("--- fim da lista ---\n\n");
  138. }
  139.  
  140. // Funcao que busca um elemento na lista de Palavras.
  141.  
  142. int BuscaDado(char const *dado){
  143.  
  144. TNODOPAL *ptr;
  145. if (inicioPal == NULL)
  146. {
  147. return 0; // Lista Vazia
  148. }
  149. // Caso a lista nao esteja vazia
  150. ptr = inicioPal;
  151. while (ptr !=NULL) {
  152. if (strcmp (ptr->info, dado) == 0)
  153. return 1; // retorna um ponteiro para
  154. //o inicio da lista
  155. else ptr = ptr->prox;
  156. }
  157. return 0;
  158. }
  159.  
  160. // Seleicona as palavras, verifica a ocorrencia, insere palavras na lista de palavras
  161. // e imprime a lista de palavras e de ponteiros
  162.  
  163. void selecionaPalavras(FILE *file){
  164.  
  165. char *palavra = (char *) malloc(sizeof(char) * 30);
  166. int aux;
  167.  
  168.  
  169.  
  170. ImprimePalavras();
  171. ImprimePonteiros();
  172. }
  173.  
  174.  
  175. //Main
  176. int main()
  177. {
  178. //char *nomeArquivo;
  179. //nomeArquivo = malloc(sizeof(char) * 20);
  180. //printf("Digite o nome do arquivo a ser aberto:");
  181. //scanf("%s", nomeArquivo);
  182.  
  183. FILE *file;
  184. file = fopen("/Users/guilhermegirotto/Desktop/Trabalho C/arquivo.txt" , "r");
  185.  
  186. if(file == NULL){
  187. printf("Arquivo n‹o encontrado!\n");
  188. return 0;
  189. }
  190.  
  191.  
  192. selecionaPalavras(file);
  193. escreveBinario();
  194.  
  195. return 1;
  196. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement