Jump to content

[ajuda]fechar programa


RickPt
 Share

Recommended Posts

Dsclpem podiame ajudar

eu tenho um codigo em que abre uma janela e supostamente quando a fecho ele devia sair do programa mas isso n acontece...

#include<stdlib.h>
#include<stdio.h>
#include<g2.h>
#include<g2_X11.h>
#include<string.h>

int main()
{

FILE *fp;
char mapa[1024];
int A,L;
char pol[10];
int x1,y1;
int x2,y2;
int id_imag;
int n,m;
char lixo[10];
char o[10];

fp=fopen("mapa.dat","r");
    
    if (fp == NULL){
            printf("ERRO: ficheiro inexistente\n");
    }else{
          fgets(mapa,1024,fp);
          sscanf(mapa,"%d %d %s\n", &A, &L, lixo);
          id_imag = g2_open_X11(A, L); 
          if(sscanf(mapa,"%d %d %s\n", &A, &L, lixo)!=2){
                                  printf("ficheiro errado na primeira linha do ficheiro deve vir duas coordenadas que correspondem à altura e à  largura do programa\n");
                                 exit(1);
          }else{
            while(o!=NULL){
                    while(strcmp(pol,  "inic_pol") != 0){
                                        fgets(mapa,1024,fp);
                                        sscanf(mapa,"%s", pol);
                    }
                    while(sscanf(mapa,"%d %d",&x1,&y1) != 2){
                                        fgets(mapa,1024,fp);
                                        sscanf(mapa,"%d %d",&x1,&y1);
                                        n=x1;
                                        m=y1;    
                    }while(strcmp(pol,  "fim_pol") != 0){
                                        fgets(mapa,1024,fp);
                                        sscanf(mapa,"%s", pol);
                                        sscanf(mapa,"%d %d\n",&x2,&y2);   
                                        g2_line(id_imag, x2, y2,x1, y1);
                                        x1=x2;
                                        y1=y2;
                    }
                    g2_line(id_imag, n, m,x1, y1);
                    sscanf(mapa,"%s",o);
                }
         }getchar();
          g2_close(id_imag);
        }  


exit(0);
}

se me pudessem ajudar eu agredecia imenso

obgd

Link to comment
Share on other sites

o meu problema é que isto cria uma janela e desenha um mapa e teoricamente ele dps de fechar o mapa devia sair do programa...mas n sai pq o ciclo do while maior é infinito e sinceramente eu n sei como o tornar finito...

nest momento tenho isto

#include<stdlib.h>
#include<stdio.h>
#include<g2.h>
#include<g2_X11.h>
#include<string.h>

int main()
{

FILE *fp;
char mapa[1024];
int A,L;
char pol[10];
int x1,y1;
int x2,y2;
int id_imag;
int n,m;
char lixo[10];
int sair;

sair=0;
fp=fopen("mapa.dat","r");
    
    if (fp == NULL){
            printf("ERRO: ficheiro inexistente\n");
    }else{
          fgets(mapa,1024,fp);
          sscanf(mapa,"%d %d %s\n", &A, &L, lixo);
          id_imag = g2_open_X11(A, L); 
          if(sscanf(mapa,"%d %d %s\n", &A, &L, lixo)!=2){
                                  printf("ficheiro errado na primeira linha do ficheiro deve vir duas coordenadas que correspondem à altura e à  largura do programa\n");
                                 exit(1);
          }else{
            while(sair!=1){
                    while(strcmp(pol,  "inic_pol") != 0){
                                        fgets(mapa,1024,fp);
                                        sscanf(mapa,"%s", pol);
                    }
                    while(sscanf(mapa,"%d %d",&x1,&y1) != 2){
                                        fgets(mapa,1024,fp);
                                        sscanf(mapa,"%d %d",&x1,&y1);
                                        n=x1;
                                        m=y1;    
                    }while(strcmp(pol,  "fim_pol") != 0){
                                        fgets(mapa,1024,fp);
                                        sscanf(mapa,"%s", pol);
                                        sscanf(mapa,"%d %d\n",&x2,&y2);   
                                        g2_line(id_imag, x2, y2,x1, y1);
                                        x1=x2;
                                        y1=y2;
                    }
                    g2_line(id_imag, n, m,x1, y1);
                    if(fgets(mapa,1024,fp)==NULL){sair=1;
                    }
                  
                }
         }getchar();
          g2_close(id_imag);
         }  
exit(0);
}

Isso compilou?

Não te esqueças do return no final da função main

Sim compilou

qual return...peço dsc mas eu ainda sou um pouco novo nisto

Link to comment
Share on other sites

Porque não fazer algo como

while (fgets(mapa,1024,fp) != NULL)

para controlares a leitura do ficheiro e alterar as condições if de acordo com isto?

Depois em vez de colocares whiles para testar se tens o inicio das coordenadas polares, colocas um if para cada tipo de strings.

Isto tornaria o código um pouco mais magro... digo eu.

No entanto, depois de ver o código com um pouco mais de atenção, ao compilar não recebes um warning com algo como "variable pol may be used uninitialized" ?

No primeiro while dentro do while (sair!=1), comparas a variável pol com "inic_pol" sem a teres inicializado.

O programa já correu? Desenhou alguma coisa?

include <ai se te avio>

Mãe () {

}

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.