Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
xagun

função file

Recommended Posts

Galerinhaa, to tentando importar dados de um .txt q criei pra salvar no meu vetor de structs e tá dando errooo,

Alguém pode me dizer o problema ? thxx segue o código.

struct soft{
	
int codigo;
char nome[TAM];
float versao;
int ano;
char function[TAM];
char tam[TAM];

}; // Antes da MAIN

main(){
  struct soft vet_cadastro[100];
case 6:
	system("cls");
	if (Importar_dados (vet_cadastro) == -1)
       printf ("ERRO na importacao do Arquivo !\n");
     break;
} // Declarei isso na main , em um switch case :)


int Importar_dados (struct soft vet_cadastro[TAM])
{
	int *size;
	int i = 0;
    FILE *import;
    *size = 0;
    char arquivo[30];
    printf("Nome do arquivo para importacao: ");
    gets(arquivo);
    strcat(arquivo, ".txt");
    import = fopen (arquivo, "r");
    if (import == NULL)
        return (-1);
  
        
    while (!feof (import))
    { 
        
        		fscanf(import,"%s\n",vet_cadastro[i].nome);
                fscanf(import,"%.1f\n", &vet_cadastro[i].versao);
                fscanf(import,"%d\n", &vet_cadastro[i].ano);
                fscanf(import,"%s\n",vet_cadastro[i].function);
                fscanf(import,"%s\n",vet_cadastro[i].tam);
                
              i++;  
    }
    fclose (import);
    return (1);
}

PS: Quando compilo o código e escrevo o nome do arquivo existente na pasta em formato .txt, o programa dá erro e fecha ):

 

Capturar.JPG

Editado por xagun

Compartilhar este post


Link para o post
Compartilhar em outros sites

Provavelmente o erro é que você está declarando um ponteiro e atribuindo um valor sem alocar.

Citação

int *size;

*size = 0;

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema provavelmente está na leitura dos dados do arquivo, tenta sem os '\n' nos fscanf()... Também notei que na struct também tem uma variável inteira "codigo", mas os valores dessa variável não estão sendo obtidos na leitura do arquivo.

Editado por isrnick

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Autor do tópico
  • 6 horas atrás, isrnick disse:

    O problema provavelmente está na leitura dos dados do arquivo, tenta sem os '\n' nos fscanf()... Também notei que na struct também tem uma variável inteira "codigo", mas os valores dessa variável não estão sendo obtidos na leitura do arquivo.

     

    11 horas atrás, MassakiMsk disse:

    Provavelmente o erro é que você está declarando um ponteiro e atribuindo um valor sem alocar.

     

    Fiz as duas coisas e continuou o mesmo erro..

    Editado por xagun

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Por que você não posta o arquivo? Isso é mais importante que mostrar seu código, se não vamos ficar trabalhando em suposições.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • 37 minutos atrás, vangodp disse:

    Por que você não posta o arquivo? Isso é mais importante que mostrar seu código, se não vamos ficar trabalhando em suposições.

    Não postei porque o código é grande e já me avisaram aqui p evitar postar códigos muito extensos sem necessidades... 
    Enfim, segue o mesmo.

    #include <stdlib.h>
    #include <string.h>
    #include <stdio.h>
    #define TAM 100
    
    int i_cad;
    
    
    struct soft{
    	
    //int codigo;
    char nome[TAM];
    float versao;
    int ano;
    char function[TAM];
    char tam[TAM];
    
    };
    
    
    
    char * cadastrar(struct soft vet_cadastro[TAM], char * nome);
    void consult(struct soft vet_cadastro[TAM]);
    int alterar(struct soft vet_cadastro[TAM]);
    void consult_versao(struct soft vet_cadastro[TAM]);
    void consult_ano(struct soft vet_cadastro[TAM]);
    void consult_tam(struct soft vet_cadastro[TAM]);
    int verifica_nome(struct soft vet_cadastro[TAM], char * nome);
    void listar(struct soft vet_cadastro[TAM]);
    int Exportar_dados (struct soft vet_cadastro[TAM]);
    int Importar_dados (struct soft vet_cadastro[TAM]);
    
    int main(int argc, char *argv[]) {
    	
    	struct soft vet_cadastro[TAM];	
    	char Chave1[10], Chave2[10];
    	int x, a=1, b=1, cont;
    	int m, f;
    	int size;
    	char call;
    	char nome[50];
    	int num;
    	int codigo;
    	char v1;
    	int retorno;
    	m = 0;
    	f = 0;
    	
    	printf("\n                       --------Bem-Vindo--------\n\n");
    	printf("\n\t\t  ** BIBLIOTECA DE SOFTWARE LIVRE **");
    	
    do{
    		printf("\n\nChave1:  ");
    		gets(Chave1);
    		fflush(stdin);
    		printf("\nChave2:  ");
    		gets(Chave2);
    		fflush(stdin);
    		a = strcmp(Chave1, "l");
    		b = strcmp(Chave2, "d");
    			
    		if (a != 0 || b != 0)
    			printf("\n                       Chave Incorreta\n\n                   ----Tente Novamente----");
    			
    	
    	}while(a != 0 || b != 0);
    	
    	
    			printf("\n                          ----Login Efetuado----\n\n");
    			getch();
    		
            system("cls");
          	  
    			 	
    	do{		
    		
    		printf("\n\nEscolha uma das opções abaixo: \n\n");
    		printf("1- Cadastrar SOFTWARE \n2- Consultar SOFTWARE \n3- Alterar cadastro \n4- Listar \n5- Exportar em ARQUIVO \n6- Importar ARQUIVO \n7- Sair <- \n");
    		printf("\nOpcao: ");
    		scanf("%d", &m);
    		fflush(stdin);
    		
    		switch(m){
    			case 1: 
    				system("cls");
    				printf("\nNome do SOFTWARE: ");
    				gets(nome);
    				retorno=0;
    				retorno = verifica_nome(vet_cadastro, nome);					
    					
    			if (retorno == 1){	
    																					
    					cadastrar(vet_cadastro, nome);
    					printf("\n\n\t   Cadastro realizado com sucesso !");
    					getch();
    					system("cls");			
    					break;
    			}else { 
    				system("cls");
    				printf("\n\tSoftware Ja cadastrado !");
    				getch();
    				break; 
    			} 
    					
    			case 2:
    				
    			do{	system("cls");
    				printf("                         \n\n...:::Tipo de Consulta:::...");
    				printf("\n\n\n1- Consulta por nome \n2- Consultar por Versao \n3- Consulta por Ano \n4- Consulta por Tamanho \n5- Voltar <- \n");
    				printf("\nOpcao: ");
    				scanf("%d", &num);
    					switch(num){
    							case 1:
    								system("cls");
    								consult(vet_cadastro);
    								getch();
    								system("cls");
    								break;
    								
    							case 2:
    								system("cls");
    								consult_versao(vet_cadastro);
    								getch();
    								system("cls");
    								break;
    									
    							case 3:
    								system("cls");
    								consult_ano(vet_cadastro);
    								getch();
    								system("cls");
    								break;
    								
    							case 4:
    								system("cls");
    								consult_tam(vet_cadastro);
    								getch();
    								system("cls");
    								break;
    							
    							case 5:
    								printf("\n\t\t     ** Voltando para Menu principal **");
    								printf("\n");
    								getch();
    								system("cls");
    								break;
    									
    							default:
    									system("cls");
    			    					printf("\n\nOpcao Invalida\n\n");
    									break;							
    				} 
    			}while(num != 5);
    					break;
    					
    				case 3:
    					system("cls");
    				 	
                        alterar(vet_cadastro);
                        system("cls");
                        break;
    				
    				case 4:
    					system("cls");
    					listar(vet_cadastro);
    					getch();
    					system("cls");
    					break;
    				
    				case 5:
    					system("cls");
    						if (Exportar_dados (vet_cadastro) == -1)
            						printf ("ERRO na criação do Arquivo !\n");
            			break;				
    				
    				case 6: 
    					system("cls");
    						if (Importar_dados (vet_cadastro) == -1)
    								printf("Erro na importacao do Arquivo!\n");
    					break;		
    					
    				case 7:
    					system("cls");
    					printf("\n\n\t\t\t\t** ADEUS ! **\n\n");
    					getch();
    					break;	
    					
    				default:
    					system("cls");
    			    	printf("\n\nOpcao Invalida\n\n");
    					break;	
    															
    			}
    			}while(m != 6);
    		
    	
    	return 0;
    }
    
    void listar(struct soft vet_cadastro[TAM]){
    		
    	int i;
    		for (i=0; i < i_cad; i++){
    			
    				printf("\n Nome: %s", vet_cadastro[i].nome);
                    printf("\n Versao: %.1f", vet_cadastro[i].versao);
                    printf("\n Ano: %d", vet_cadastro[i].ano);
                    printf("\n Funcionalidade: %s", vet_cadastro[i].function);
                    printf("\n Tamanho: %s", vet_cadastro[i].tam);
                    printf("\n\n");
                    
    		} return;	
    	
    }
    
    char * cadastrar(struct soft vet_cadastro[TAM], char * nome){
    	
    	
    	if(i_cad > 100)return 0;
    	char call;
    	
    
    
    		
    			
    			strcpy(vet_cadastro[i_cad].nome, nome);
    			
    			fflush(stdin);
    			printf("Versao: ");
    			scanf("%f", &vet_cadastro[i_cad].versao);
    			fflush(stdin);
    			printf("Ano: ");
    			scanf("%d", &vet_cadastro[i_cad].ano);
    			fflush(stdin);
    			printf("Funcionalidade: ");
    			gets(vet_cadastro[i_cad].function);
    			fflush(stdin);
    			printf("Tamanho: ");
    			gets(vet_cadastro[i_cad].tam);
    			fflush(stdin);
    
    			
    
    			i_cad++;
    			
    
    
    	
    	}
    
    void consult(struct soft vet_cadastro[TAM]){
    	
    	char nome[30];
    	int i = 0;
    	
    	printf("\nDigite o nome: ");
    	scanf("%s", nome);
    	
    	for ( i = 0; i < TAM; i++ )
        {
            if (strcmp(vet_cadastro[i].nome, nome) == 0 )
            {
                      
                    printf("\n Nome: %s", vet_cadastro[i].nome);
                    printf("\n Versao: %.1f", vet_cadastro[i].versao);
                    printf("\n Ano: %d", vet_cadastro[i].ano);
                    printf("\n Funcionalidade: %s", vet_cadastro[i].function);
                    printf("\n Tamanho: %s", vet_cadastro[i].tam);
                    printf("\n\n");
                    return;
                 	
    }else if (i == 99 && strcmp(vet_cadastro[99].nome, nome)){
    				printf("\n\tNome nao cadastrado !");
    				return;
    				
    }
    }				
    }
    
    void consult_versao(struct soft vet_cadastro[TAM]){
    	
    	float versao;
    	int i = 0;
    	
    	printf("\nInforme a Versao: ");
    	scanf("%f", &versao);
    	
    	for ( i = 0; i < TAM; i++ )
        {
            if (vet_cadastro[i].versao == versao)  
            {
                      
                    printf("\n Nome: %s", vet_cadastro[i].nome);
                    printf("\n Versao: %.1f", vet_cadastro[i].versao);
                    printf("\n Ano: %d", vet_cadastro[i].ano);
                    printf("\n Funcionalidade: %s", vet_cadastro[i].function);
                    printf("\n Tamanho: %s", vet_cadastro[i].tam);
                    printf("\n\n");
                    return;
                   	
    }else if (i == 99 && vet_cadastro[99].versao == versao){
    				printf("\n\tVersao nao cadastrada !");
    				return;
    				
    }				
    }
    }
    
    void consult_ano(struct soft vet_cadastro[TAM]){
    	
    	int ano;
    	int i = 0;
    	
    	printf("\nInforme o Ano: ");
    	scanf("%d", &ano);
    	
    	for ( i = 0; i < TAM; i++ )
        {
            if (vet_cadastro[i].ano == ano)  
            {
                      
                    printf("\n Nome: %s", vet_cadastro[i].nome);
                    printf("\n Versao: %.1f", vet_cadastro[i].versao);
                    printf("\n Ano: %d", vet_cadastro[i].ano);
                    printf("\n Funcionalidade: %s", vet_cadastro[i].function);
                    printf("\n Tamanho: %s", vet_cadastro[i].tam);
                    printf("\n\n");
                    return;
                    
                	}else if (i == 99 && vet_cadastro[99].ano == ano){
    				printf("\n\tAno nao cadastrado !");
    				return;
    				
    }			
    }
    }
    
    void consult_tam(struct soft vet_cadastro[TAM]){
    	
    	char tam[TAM];
    	int i = 0;
    	
    	printf("\nInforme o Tamanho: ");
    	scanf("%s", tam);
    	
    	for ( i = 0; i < TAM; i++ )
        {
            if (strcmp(vet_cadastro[i].tam, tam) == 0 ) 
            {
                      
                    printf("\n Nome: %s", vet_cadastro[i].nome);
                    printf("\n Versao: %.1f", vet_cadastro[i].versao);
                    printf("\n Ano: %d", vet_cadastro[i].ano);
                    printf("\n Funcionalidade: %s", vet_cadastro[i].function);
                    printf("\n Tamanho: %s", vet_cadastro[i].tam);
                    printf("\n\n");
                    return;
                    
            }else if (i == 99 && strcmp(vet_cadastro[99].tam, tam)){
    				printf("\n\tTamanho nao cadastrado !");
    				return;
                  	
    				
    }				
    }
    }
    
    int verifica_nome(struct soft vet_cadastro[TAM], char *nome){
    	
    	int i;
    	//	if (i_cad < 1){
    			
    //} 
    
    	for ( i = 0; i < TAM; i++ )
        {
        	if (strcmp(vet_cadastro[i].nome, nome) == 0)
            	return 0;			  	          
    	}
    	
    		return 1;		
    } 
    
    int alterar(struct soft vet_cadastro[TAM]){
    	
    	char nome[30];
    	int i;
    	
    	if(i_cad > 100)return 0;
    	
    	
    		printf("\nEntre com o nome do Software: \n");
            scanf("%s", nome);
            
        for(i=0; i < TAM; i++){
            
         	if (strcmp(vet_cadastro[i].nome, nome) == 0 ){		
    
    			fflush(stdin);
    			printf("\nNome do SOFTWARE: ");
    			gets(vet_cadastro[i].nome);
    			fflush(stdin);
    			printf("Versao: ");
    			scanf("%f", &vet_cadastro[i].versao);
    			fflush(stdin);
    			printf("Ano: ");
    			scanf("%d", &vet_cadastro[i].ano);
    			fflush(stdin);
    			printf("Funcionalidade: ");
    			gets(vet_cadastro[i].function);
    			fflush(stdin);
    			printf("Tamanho: ");
    			gets(vet_cadastro[i].tam);
    			fflush(stdin);
    			
    			break;		
    
    	}
    	
    }
    
    }
    
    
    int Exportar_dados (struct soft vet_cadastro[TAM])
    {
        int i;
        FILE *saida;
        char arquivo[30];
        printf("Nome do arquivo para exportacao: ");
        gets(arquivo);
        strcat(arquivo, ".txt");
        saida = fopen (arquivo, "w");
        if (saida == NULL)
            return (-1); 
            
        for (i = 0; i < TAM; i++)
        {
            		fprintf(saida, "\n Nome: %s\n",vet_cadastro[i].nome);
                    fprintf(saida,"\n Versao: %.1f\n", vet_cadastro[i].versao);
                    fprintf(saida,"\n Ano: %d\n", vet_cadastro[i].ano);
                    fprintf(saida,"\n Funcionalidade : %s\n",vet_cadastro[i].function);
                    fprintf(saida,"\n Tamanho : %s\n\n\n",vet_cadastro[i].tam);
                   
                    
        }
        fclose (saida);
        return (1); 
    }
    
    int Importar_dados (struct soft vet_cadastro[TAM])
    {
    	int *size;
    	int i = 0;
        FILE *import;
       // *size = 0;
        char arquivo[30];
        printf("Nome do arquivo para importacao: ");
        gets(arquivo);
      	strcat(arquivo, ".txt");
        import = fopen (arquivo, "r");
        if (import == NULL)
            return (-1);
      //  V v=  malloc (sizeof (IDENT));
      //  if (V == NULL)
      //      return (NULL);
            
        while (!feof (import))
        {
          //  *size = *size + 1;
          //  V = realloc (V, (*tam) * sizeof (IDENT));
          //  if (vet_cadastro == NULL)
          //      return (NULL);
            
            		fscanf(import,"%s",vet_cadastro[i].nome);
                    fscanf(import,"%.1f", &vet_cadastro[i].versao);
                    fscanf(import,"%d", &vet_cadastro[i].ano);
                    fscanf(import,"%s",vet_cadastro[i].function);
                    fscanf(import,"%s",vet_cadastro[i].tam);
                    
                  i++;  
        }
        fclose (import);
        return (1);
    }

     

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    É por causa desse monte de \n, espaço e palavras que tem na hora de salvar o cadastro. Na hora de ler não pode simplesmente ignorar.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    O seu programa grava isso?!!
     

     Nome: lolcode
    
     Versao: 1.0
    
     Ano: 2017
    
     Funcionalidade : codifica em formato lol
    
     Tamanho : 100GB
    
    
    
     Nome: 
    
     Versao: 0.0
    
     Ano: 0
    
     Funcionalidade : 
    
     Tamanho : 
    
    
    
     Nome: 
    
     Versao: 0.0
    
     Ano: 0
    
     Funcionalidade : 
    
     Tamanho : 
    
    .......

    É um grande caso de ineficiência.
    Não seria melhor você gravar cada software por linha?
    Tipo:

    lolcode 1.0 2017 100GB codifica em formato lol

    Sabendo que os campos são nome, versão, ano, tamanho e funcionalidades, nessa ordem, você poderia ler com algo como:
     

    #include<stdio.h>
    #include <stdlib.h>
    #define TAM 100
    
    typedef struct Soft {
        char nome[TAM];
        float versao;
        int ano;
        char function[TAM];
        char tam[TAM];
    }Soft;
    
    int main(){
        FILE* file;
        
        if ( !(file = fopen("teste.txt", "r+"))){
            perror("Erro ");
            getchar();
            exit(1);    
        }else{
            printf("Arquivo aberto.\n");
        }
        
        Soft dados;
        //lolcode 1.0 2017 100GB codifica em formato lol
        fscanf(file, "%s %f %d %s %99[^\n]%*c", dados.nome, &dados.versao, &dados.ano, dados.tam, dados.function);
        
        printf ( "\n Nome: %s", dados.nome );
        printf ( "\n Versao: %.1f", dados.versao );
        printf ( "\n Ano: %d", dados.ano );
        printf ( "\n Tamanho: %s", dados.tam );
        printf ( "\n Funcionalidade: %s", dados.function );
        printf ( "\n\n" );
        
        fclose(file);
        printf("Bye!");
        return 0;
    }

     

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Se preferir continuar com sua versão do programa aqui lhe deixo sue programa arrumado. Ou isso acho >_<.
     

    #include <stdlib.h>
    #include <string.h>
    #include <stdio.h>
    #include <conio.h>
    #define TAM 100
    
    int i_cad;
    
    
    typedef struct soft {
        char nome[TAM];
        float versao;
        int ano;
        char function[TAM];
        char tam[TAM];
    }soft;
    
    
    
    char * cadastrar ( struct soft vet_cadastro[TAM], char * nome );
    void consult ( struct soft vet_cadastro[TAM] );
    int alterar ( struct soft vet_cadastro[TAM] );
    void consult_versao ( struct soft vet_cadastro[TAM] );
    void consult_ano ( struct soft vet_cadastro[TAM] );
    void consult_tam ( struct soft vet_cadastro[TAM] );
    int verifica_nome ( struct soft vet_cadastro[TAM], char * nome );
    void listar ( struct soft vet_cadastro[TAM] );
    int Exportar_dados ( struct soft vet_cadastro[TAM] );
    int Importar_dados ( struct soft vet_cadastro[] );
    
    int main ( int argc, char *argv[] ) {
    
        struct soft vet_cadastro[TAM];
        int m;
        char nome[50];
        int num;
        int retorno;
        m = 0;
        //f = 0;
        /*
        int a = 1, b = 1;// cont, x;
        char Chave1[10], Chave2[10];
        printf ( "\n                       --------Bem-Vindo--------\n\n" );
        printf ( "\n\t\t  ** BIBLIOTECA DE SOFTWARE LIVRE **" );
        
        do {
            printf ( "\n\nChave1:  " );
            gets ( Chave1 );
            fflush ( stdin );
            printf ( "\nChave2:  " );
            gets ( Chave2 );
            fflush ( stdin );
            a = strcmp ( Chave1, "l" );
            b = strcmp ( Chave2, "d" );
            
            if ( a != 0 || b != 0 )
                printf ( "\n                       Chave Incorreta\n\n                   ----Tente Novamente----" );
                
                
        } while ( a != 0 || b != 0 );
        
        
        printf ( "\n                          ----Login Efetuado----\n\n" );
        getch();
        
        system ( "cls" );
        
        */
        do {
        
            printf ( "\n\nEscolha uma das opções abaixo: \n\n" );
            printf ( "1- Cadastrar SOFTWARE \n2- Consultar SOFTWARE \n3- Alterar cadastro \n4- Listar \n5- Exportar em ARQUIVO \n6- Importar ARQUIVO \n7- Sair <- \n" );
            printf ( "\nOpcao: " );
            scanf ( "%d", &m );
            fflush ( stdin );
            
            switch ( m ) {
                case 1:
                    system ( "cls" );
                    printf ( "\nNome do SOFTWARE: " );
                    gets ( nome );
                    retorno = 0;
                    retorno = verifica_nome ( vet_cadastro, nome );
                    
                    if ( retorno == 1 ) {
                    
                        cadastrar ( vet_cadastro, nome );
                        printf ( "\n\n\t   Cadastro realizado com sucesso !" );
                        getch();
                        system ( "cls" );
                        break;
                    } else {
                        system ( "cls" );
                        printf ( "\n\tSoftware Ja cadastrado !" );
                        getch();
                        break;
                    }
                    
                case 2:
                
                    do {
                        system ( "cls" );
                        printf ( "                         \n\n...:::Tipo de Consulta:::..." );
                        printf ( "\n\n\n1- Consulta por nome \n2- Consultar por Versao \n3- Consulta por Ano \n4- Consulta por Tamanho \n5- Voltar <- \n" );
                        printf ( "\nOpcao: " );
                        scanf ( "%d", &num );
                        
                        switch ( num ) {
                            case 1:
                                system ( "cls" );
                                consult ( vet_cadastro );
                                getch();
                                system ( "cls" );
                                break;
                                
                            case 2:
                                system ( "cls" );
                                consult_versao ( vet_cadastro );
                                getch();
                                system ( "cls" );
                                break;
                                
                            case 3:
                                system ( "cls" );
                                consult_ano ( vet_cadastro );
                                getch();
                                system ( "cls" );
                                break;
                                
                            case 4:
                                system ( "cls" );
                                consult_tam ( vet_cadastro );
                                getch();
                                system ( "cls" );
                                break;
                                
                            case 5:
                                printf ( "\n\t\t     ** Voltando para Menu principal **" );
                                printf ( "\n" );
                                getch();
                                system ( "cls" );
                                break;
                                
                            default:
                                system ( "cls" );
                                printf ( "\n\nOpcao Invalida\n\n" );
                                break;
                        }
                    } while ( num != 5 );
                    
                    break;
                    
                case 3:
                    system ( "cls" );
                    
                    alterar ( vet_cadastro );
                    system ( "cls" );
                    break;
                    
                case 4:
                    system ( "cls" );
                    listar ( vet_cadastro );
                    getch();
                    system ( "cls" );
                    break;
                    
                case 5:
                    system ( "cls" );
                    
                    if ( Exportar_dados ( vet_cadastro ) == -1 )
                        printf ( "ERRO na criação do Arquivo !\n" );
                        
                    break;
                    
                case 6:
                    system ( "cls" );
                    
                    if ( Importar_dados ( vet_cadastro ) == -1 )
                        printf ( "Erro na importacao do Arquivo!\n" );
                        
                    break;
                    
                case 7:
                    system ( "cls" );
                    printf ( "\n\n\t\t\t\t** ADEUS ! **\n\n" );
                    getch();
                    break;
                    
                default:
                    system ( "cls" );
                    printf ( "\n\nOpcao Invalida\n\n" );
                    break;
                    
            }
        } while ( m != 7 );
        
        
        return 0;
    }
    
    void listar ( soft vet_cadastro[] ) {
        int i;
    
        for ( i = 0; i < i_cad; i++ ) {
            printf("\n Nome: %s"            , vet_cadastro[i].nome);
            printf("\n Versao: %.1f"        , vet_cadastro[i].versao);
            printf("\n Ano: %d"             , vet_cadastro[i].ano);
            printf("\n Funcionalidade: %s"  , vet_cadastro[i].function);
            printf("\n Tamanho: %s"         , vet_cadastro[i].tam);
            printf("\n\n");
        }
    }
    
    char * cadastrar ( struct soft vet_cadastro[TAM], char * nome ) {
    
    
        if ( i_cad == 100 ) return 0;
        
        //char call;
        
        
        
        
        
        strcpy ( vet_cadastro[i_cad].nome, nome );
        
        fflush ( stdin );
        printf ( "Versao: " );
        scanf ( "%f", &vet_cadastro[i_cad].versao );
        fflush ( stdin );
        printf ( "Ano: " );
        scanf ( "%d", &vet_cadastro[i_cad].ano );
        fflush ( stdin );
        printf ( "Funcionalidade: " );
        gets ( vet_cadastro[i_cad].function );
        fflush ( stdin );
        printf ( "Tamanho: " );
        gets ( vet_cadastro[i_cad].tam );
        fflush ( stdin );
        
        
        
        i_cad++;
        
        
        return "tem que retornar algo";
        
    }
    
    void consult ( struct soft vet_cadastro[TAM] ) {
    
        char nome[30];
        int i = 0;
        
        printf ( "\nDigite o nome: " );
        scanf ( "%s", nome );
        
        for ( i = 0; i < TAM; i++ ) {
            if ( strcmp ( vet_cadastro[i].nome, nome ) == 0 ) {
            
                printf ( "\n Nome: %s", vet_cadastro[i].nome );
                printf ( "\n Versao: %.1f", vet_cadastro[i].versao );
                printf ( "\n Ano: %d", vet_cadastro[i].ano );
                printf ( "\n Funcionalidade: %s", vet_cadastro[i].function );
                printf ( "\n Tamanho: %s", vet_cadastro[i].tam );
                printf ( "\n\n" );
                return;
                
            } else if ( i == 99 && strcmp ( vet_cadastro[99].nome, nome ) ) {
                printf ( "\n\tNome nao cadastrado !" );
                return;
                
            }
        }
    }
    
    void consult_versao ( struct soft vet_cadastro[TAM] ) {
    
        float versao;
        int i = 0;
        
        printf ( "\nInforme a Versao: " );
        scanf ( "%f", &versao );
        
        for ( i = 0; i < TAM; i++ ) {
            if ( vet_cadastro[i].versao == versao ) {
            
                printf ( "\n Nome: %s", vet_cadastro[i].nome );
                printf ( "\n Versao: %.1f", vet_cadastro[i].versao );
                printf ( "\n Ano: %d", vet_cadastro[i].ano );
                printf ( "\n Funcionalidade: %s", vet_cadastro[i].function );
                printf ( "\n Tamanho: %s", vet_cadastro[i].tam );
                printf ( "\n\n" );
                return;
                
            } else if ( i == 99 && vet_cadastro[99].versao == versao ) {
                printf ( "\n\tVersao nao cadastrada !" );
                return;
                
            }
        }
    }
    
    void consult_ano ( struct soft vet_cadastro[TAM] ) {
    
        int ano;
        int i = 0;
        
        printf ( "\nInforme o Ano: " );
        scanf ( "%d", &ano );
        
        for ( i = 0; i < TAM; i++ ) {
            if ( vet_cadastro[i].ano == ano ) {
            
                printf ( "\n Nome: %s", vet_cadastro[i].nome );
                printf ( "\n Versao: %.1f", vet_cadastro[i].versao );
                printf ( "\n Ano: %d", vet_cadastro[i].ano );
                printf ( "\n Funcionalidade: %s", vet_cadastro[i].function );
                printf ( "\n Tamanho: %s", vet_cadastro[i].tam );
                printf ( "\n\n" );
                return;
                
            } else if ( i == 99 && vet_cadastro[99].ano == ano ) {
                printf ( "\n\tAno nao cadastrado !" );
                return;
                
            }
        }
    }
    
    void consult_tam ( struct soft vet_cadastro[TAM] ) {
    
        char tam[TAM];
        int i = 0;
        
        printf ( "\nInforme o Tamanho: " );
        scanf ( "%s", tam );
        
        for ( i = 0; i < TAM; i++ ) {
            if ( strcmp ( vet_cadastro[i].tam, tam ) == 0 ) {
            
                printf ( "\n Nome: %s", vet_cadastro[i].nome );
                printf ( "\n Versao: %.1f", vet_cadastro[i].versao );
                printf ( "\n Ano: %d", vet_cadastro[i].ano );
                printf ( "\n Funcionalidade: %s", vet_cadastro[i].function );
                printf ( "\n Tamanho: %s", vet_cadastro[i].tam );
                printf ( "\n\n" );
                return;
                
            } else if ( i == 99 && strcmp ( vet_cadastro[99].tam, tam ) ) {
                printf ( "\n\tTamanho nao cadastrado !" );
                return;
                
                
            }
        }
    }
    
    int verifica_nome ( struct soft vet_cadastro[TAM], char *nome ) {
    
        int i;
        //  if (i_cad < 1){
        
    
        
        for ( i = 0; i < TAM; i++ ) {
            if ( strcmp ( vet_cadastro[i].nome, nome ) == 0 )
                return 0;
        }
        
        return 1;
    }
    
    int alterar ( struct soft vet_cadastro[TAM] ) {
    
        char nome[30];
        int i;
        
        if ( i_cad > 100 ) return 0;
        
        
        printf ( "\nEntre com o nome do Software: \n" );
        scanf ( "%s", nome );
        
        for ( i = 0; i < TAM; i++ ) {
        
            if ( strcmp ( vet_cadastro[i].nome, nome ) == 0 ) {
            
                fflush ( stdin );
                printf ( "\nNome do SOFTWARE: " );
                gets ( vet_cadastro[i].nome );
                fflush ( stdin );
                printf ( "Versao: " );
                scanf ( "%f", &vet_cadastro[i].versao );
                fflush ( stdin );
                printf ( "Ano: " );
                scanf ( "%d", &vet_cadastro[i].ano );
                fflush ( stdin );
                printf ( "Funcionalidade: " );
                gets ( vet_cadastro[i].function );
                fflush ( stdin );
                printf ( "Tamanho: " );
                gets ( vet_cadastro[i].tam );
                fflush ( stdin );
                
                break;
                
            }
            
        }
        return 0;
    }
    
    
    int Exportar_dados ( soft vet_cadastro[] ) {
        FILE* file;
        
        if ( !(file = fopen("teste.txt", "w"))){
            perror("Erro ");
            getchar();
            return ( -1 );  
        }
        int i;
        for ( i = 0; i < i_cad; i++ ) {
            //fscanf ( file , format , vet_cadastro[i_cad].nome, vet_cadastro[i_cad].versao, vet_cadastro[i_cad].ano, vet_cadastro[i_cad].function, vet_cadastro[i_cad].tam);
            
            fprintf(file, "\n Nome: %s\n"           , vet_cadastro[i].nome);
            fprintf(file,"\n Versao: %.1f\n"        , vet_cadastro[i].versao);
            fprintf(file,"\n Ano: %d\n"             , vet_cadastro[i].ano);
            fprintf(file,"\n Funcionalidade : %s\n" , vet_cadastro[i].function);
            fprintf(file,"\n Tamanho : %s\n\n\n"    , vet_cadastro[i].tam);
            
            
        }    
    
        fclose ( file );
        return ( 1 );
    }
    
    int Importar_dados( soft* vet_cadastro ) {
        FILE* file;
        if ( !(file = fopen("teste.txt", "r"))){
            perror("Erro ");
            getchar();
            return ( -1 );  
        }
        
        i_cad = 0;
        
        fscanf(file, "\n Nome: %[^\n]\n"            ,  vet_cadastro[i_cad].nome);
        fscanf(file,"\n Versao: %f\n"               , &vet_cadastro[i_cad].versao);
        fscanf(file,"\n Ano: %d\n"                  , &vet_cadastro[i_cad].ano);
        fscanf(file,"\n Funcionalidade : %[^\n]\n"  ,  vet_cadastro[i_cad].function);
        fscanf(file,"\n Tamanho : %s\n\n\n"         ,  vet_cadastro[i_cad].tam);
        if (feof(file)==0) i_cad++;
        while ( feof(file) == 0 ){
            fscanf(file, "\n Nome: %[^\n]\n"            ,  vet_cadastro[i_cad].nome);
            fscanf(file,"\n Versao: %f\n"               , &vet_cadastro[i_cad].versao);
            fscanf(file,"\n Ano: %d\n"                  , &vet_cadastro[i_cad].ano);
            fscanf(file,"\n Funcionalidade : %[^\n]\n"  ,  vet_cadastro[i_cad].function);
            fscanf(file,"\n Tamanho : %s\n\n\n"         ,  vet_cadastro[i_cad].tam);
            i_cad++;
            if(i_cad == TAM) break;
        }
        
        fclose ( file );
        return ( 1 );
    }

    Desativei o tal das chaves, é só retirar o comentário do código e volta a funcionar. Era muito chato ficar pondo l e d todo o tempo :P

    Cara um conselho... se você fizer seu programa assim você vai sofrer e sofrer sheuhseusehshuesuh:rezando:

    • Curtir 1

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • poo , rodou nesse programa meu, porém coloquei nesse outro aqui e tá dando q nao encontro o arquivo...

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <conio.h>
    #define TAM 100
    
    struct Compra
    {
        float valor;
        
    };
    
    struct agenda {
        int cod;
        char nome[TAM];
        char curso[TAM];
        char instituicao[TAM];
        char local[TAM];
        char sala[TAM];
        char hora[TAM];
        char horario[TAM];
        struct Compra compra;
        
       
    } registros[100];
    
    void cadastrar(int cod, int pos);
    void consultar();
    int verifica_pos();
    void zerar();
    int verifica_cod(int cod);
    void excluir();
    int arquivo ();
    int import_arq();
    
    
    int main(void){
        int op = 0;
        int retorno;
        int codaux;
        int posicao;
        int back;
        int documento;
        char Chave1[TAM];
        char Chave2[TAM];
        int x, a=1, b=1;
        char cadsistema[TAM];
        char cadsistemapass[TAM];
        int logon = 0;
    
    do{    
        printf("\n\n\t\tCadastre um Login e Senha unico para o SISTEMA\n\n");
        printf("\nMENU\n\n1 - >> Cadastrar << \n2 - Logar \n3 - Sair");
        printf("\n\n\nOpcao: ");
        
        scanf("%d", &logon);
        system("cls");
        
        switch (logon){
        	
        	case 1:
        		fflush(stdin);
        		printf("\n Cadastre um Login:  ");
        		gets(cadsistema);
        		fflush(stdin);
        		
        		printf("\n Cadastre uma Senha:  ");
        		gets(cadsistemapass);
        		fflush(stdin);
        		
        		system("cls");
        		break;
        	case 3:
        		printf("\n\n\t\t     Obrigado por utilizar de nossos Servicos\n\n");
            	printf("\n\n\t\t                Volte Sempre !\n\n");
            	getch();
        		return(0);
        		break;
        	case 2:
        		printf("\t -- Indo para Menu de Login --");
        		break;
        		
         	default:
         		printf("Opcao Invalida");
         		break;
    	}
    }while( logon != 2 );
        
        
       do{
       			fflush(stdin);
    			printf("\n\n Login:  ");
    			gets(Chave1);
    			fflush(stdin);
    			printf("\n Senha:  ");
    			gets(Chave2);
    			fflush(stdin);
    			a = strcmp(Chave1, cadsistema);
    			b = strcmp(Chave2, cadsistemapass);
    			
    			if(a!=0 || b!=0){
    				printf("\n\n\tLogin ou senha Errados !\n");
           			printf("\n\tTente novamente\n");
    		}
    		}while(a!=0 || b!=0);
    					system("cls");
    					printf("\n       ** Login efetuado com sucesso **");
    					getch();
    					system("cls");
            			
    				
           				
    
        zerar();
    
        
        do{
            printf("\n\n\t------- CADASTRO DE PESSOAS EM CURSOS DE SOFTWARE LIVRE -------\n\n");
            printf("\n\n\t\t\t\t** Bem Vindo ! **\n\n");
            printf("\n\n   ** PARA CADASTRAR O ALUNO NO CURSO, PRIMEIRO CADASTRE O RESPECTIVO RG **\n\n");
            printf("\nMENU\n\n1 - Cadastrar RG Aluno\n2 - Cadastrar Aluno\n3 - Consultar RG\n4 - Limpar RG\n5 - Exportar Dados\n6 - Importar Dados\n7 - Sair\n\nOpcao: ");
    
            scanf("%d",&op);
    
            system("cls");
    
            switch (op)
            {
                case 1:
                {
                  // posicao = verifica_pos();
    
                  // if ( posicao != -1 )
                   // {
                        printf("\nCadastre o RG do aluno:\n");
                        scanf("%d",&codaux);fflush(stdin);
                        
                        system("cls");
                        break;
                //	}
    				}
    			case 2:
    			{				
    				posicao = verifica_pos();
    
                    if ( posicao != -1 ) // por ser qualquer valor se compara a diferente de -1 e nao = a 0.
                    {
    				
                        printf("\nCadastre o Aluno:\n");
    
                        retorno = verifica_cod(codaux);
    
                        if ( retorno == 1 )
                            cadastrar(codaux,posicao);
                        else
                            printf("\nRG ja existente\n");
                    }
                
                    else
                        printf("\nA agenda de RG esta cheia\n");
                        
    				system("cls");
                    break;
                    
                }
                case 3:
                {            	
                    consultar();
                    getch();
                    system("cls");
                    break;
                }
                case 4:
                {
                    excluir();
                    system("cls");
                    break;
                }
               case 5:
                {
                    documento = arquivo();
                	if(documento == -1)
                		printf("Erro na exportação de dados !");            		
                	getch();
                	system("cls");
                	break;
                } 
                case 6:
                {
                	
                	if (import_arq() == 1)
                		printf("Erro de leitura do arquivo !");
                	getch();
    			//	system("cls");
    				break;	
    			}
                	
                 case 7:
                {
                    printf("\n\n\t\t     Obrigado por utilizar de nossos Servicos\n\n");
            		printf("\n\n\t\t                Volte Sempre !\n\n");
                    break;
                } 
                default :
                { 
                    printf("Opcao Invalida");
                    break;
                }
            }
        }while ( op != 7 );
        
     
            	
    	getch();
    
        return 0;
    }
    
    void cadastrar(int cod, int pos)
    {
        pos = verifica_pos();
    
        registros[pos].cod = cod;
    	fflush(stdin);
        printf("\n Nome:\n");
        gets(registros[pos].nome);
        fflush(stdin);  
    
        printf("\n Cursos:\n");
        gets(registros[pos].curso);
        fflush(stdin);
    
        printf("\n Instituicao:\n");
        gets(registros[pos].instituicao); 
        fflush(stdin);
        
        printf("\n Local:\n");
        gets(registros[pos].local);
        fflush(stdin);
        
        printf("\n Sala[s]:\n");
        gets(registros[pos].sala); 
        fflush(stdin);
        
        printf("\n Horario de Inicio:\n");
        scanf("%s", registros[pos].hora);
        
        
        printf("\n Horario de Termino:\n");
        scanf("%s", registros[pos].horario);
        
    
        printf("\n Valor: \n");
        scanf("%f", &registros[pos].compra.valor);
    
       
    
        printf("\nCadastro Realizado com Sucesso!\n\n");
    }
    
    void consultar()
    {
        int cont = 0;
        int cod;
    
        printf("\nEntre com o RG\n");
        scanf("%d",&cod);
    
        for ( cont = 0; cont < 100; cont++ )
        {
            if ( registros[cont].cod == cod )
            {
                if ( registros[cont].compra.valor != 0 ) 
                {
                    printf("\n Nome: %s", registros[cont].nome);
                    printf("\n Curso: %s", registros[cont].curso);
                    printf("\n Instituicao: %s", registros[cont].instituicao);
                    printf("\n Local: %s", registros[cont].local);
                    printf("\n Sala: %s", registros[cont].sala);
                    printf("\n Horario de Inicio: %s", registros[cont].hora);
                    printf("\n Horario de Termino: %s", registros[cont].horario);
                    printf("\n Valor: %.2f", registros[cont].compra.valor);
                
                }else {
                	
                	printf("\n Nome: %s", registros[cont].nome);
                    printf("\n Curso: %s", registros[cont].curso);
                    printf("\n Instituicao: %s", registros[cont].instituicao);
                    printf("\n Local: %s", registros[cont].local);
                    printf("\n Sala: %s", registros[cont].sala);
                    printf("\n Horario de Inicio: %s", registros[cont].hora);
                    printf("\n Horario de Termino: %s", registros[cont].horario);
                    printf("\n Valor: %.2f", registros[cont].compra.valor);
    			} 
                return; 
            }
        }
    
        printf("\nRG nao encontrado\n"); 
    
    }
    
    int verifica_pos()
    {
        int cont = 0;
    
        for ( cont = 0; cont < 100; cont++ )
            if ( registros[cont].compra.valor == 0 ) // se for verdadeiro qualquer valor será 0 e vai retornar sua posição
                return cont;
    
        return -1; // se for falso ele vai retornar -1
    }
    
    void zerar()
    {
        int cont = 0;
    
    }
    
    int verifica_cod(int cod)
    {
        int cont = 0;
    
        for ( cont = 0; cont < 100; cont++ )
        {
            if ( registros[cont].cod == cod )
                return 0;
        }
    
        return 1;
    }
    
    void excluir()
    {
        int cod = 0;
        int cont = 0;
    
        printf("\nEntre com o RG que deseja Limpar\n");
        scanf("%d",&cod);
    
        for ( cont = 0; cont < 100; cont++ )
        {
            if ( registros[cont].cod == cod )
            {
                if ( registros[cont].compra.valor != 0 )  
                {
                    registros[cont].cod = 0;
                    strcpy(registros[cont].nome, "");
                    strcpy(registros[cont].curso, "");
                    strcpy(registros[cont].instituicao, "");
                    strcpy(registros[cont].local, "");
                    strcpy(registros[cont].sala, "");
                    strcpy(registros[cont].hora, "");
                    strcpy(registros[cont].horario, "");
                    registros[cont].compra.valor = 0;
                             
    			
                    printf("\n  RG Limpo com sucesso!\n");
                    printf("\n\n\n\t     Para alterar o cadastro, \n\n\tinforme no menu CADASTRE O ALUNO as informações corretas.");
                    getch();
                    
                }else if ( registros[cont].compra.valor == 0 ){
                	
                	registros[cont].cod = 0;
                    strcpy(registros[cont].nome, "");
                    strcpy(registros[cont].curso, "");
                    strcpy(registros[cont].instituicao, "");
                    strcpy(registros[cont].local, "");
                    strcpy(registros[cont].sala, "");
                    strcpy(registros[cont].hora, "");
                    strcpy(registros[cont].horario, "");
                    registros[cont].compra.valor = 0;
                    
              
    				
                    printf("\n  RG Limpo com sucesso!\n");
                    printf("\n\n\n\t     Para alterar o cadastro, \n\n\tinforme no menu CADASTRE O ALUNO as informações corretas.");
                    getch();
                    
                    
    			}
                	
    
                return; 
            }
        }
    
        printf("\nRG nao encontrado\n"); 
        getch();
    }
    
    int arquivo ()
    {
        int cont;
        FILE *doc;
        char nome[30];
        
        fflush(stdin);
        printf("Nome do Documento: ");
        gets(nome);
        strcat(nome, ".txt");
        doc = fopen (nome, "w");
        if (doc == NULL)
            return (-1); 
            
        for (cont = 0; cont < TAM; cont++)
        {
            		fprintf(doc,"%s\n",registros[cont].nome);
                    fprintf(doc,"%s\n", registros[cont].curso);
                    fprintf(doc,"%s\n", registros[cont].instituicao);
                    fprintf(doc,"%s\n",registros[cont].local);
                    fprintf(doc,"%s\n",registros[cont].sala);
                    fprintf(doc,"%s\n",registros[cont].hora);
                    fprintf(doc,"%s\n",registros[cont].horario);
                    fprintf(doc,"%.2f\n",registros[cont].compra.valor);
                                 
                    
        }
        fclose (doc);
        return (1); 
    }
    
    int import_arq(){
    	
    	int cont;
        FILE* documento;
        char nome[30];
        
        printf("Nome do Documento: ");
        gets(nome);
        strcat(nome, ".txt");
        
        if ( !(documento = fopen(nome, "r+"))){
        	perror("Erro ");
            getchar();
            return(1);    
        }else{
            printf("Arquivo aberto.\n");
        }
        
        
       for (cont=0; cont<2; cont++){ 
            fscanf(documento, "%s %s %s %s %s %s %s %s %99[^\n]%*c", registros[cont].nome , registros[cont].curso, registros[cont].instituicao, registros[cont].local, registros[cont].sala, registros[cont].hora, registros[cont].horario);
            // %99[^\n]%*c
           // registros[cont].nome , registros[cont].curso, registros[cont].instituicao, registros[cont].local, registros[cont].sala, registros[cont].hora, registros[cont].horario, registros[cont].compra.valor
       				
        printf ( "\n Nome: %s", registros[cont].nome );
        printf ( "\n Versao: %.1f", registros[cont].curso );
        printf ( "\n Ano: %d", registros[cont].instituicao );
        printf ( "\n Funcionalidade: %s", registros[cont].local );
        printf ( "\n Tamanho: %s", registros[cont].sala );
        printf ( "\n Tamanho: %s", registros[cont].hora );
        printf ( "\n Tamanho: %s", registros[cont].horario );
        //printf ( "\n Tamanho: %.2f", registros[cont].compra.valor );
        printf ( "\n\n" );
        
    }
        
        fclose(documento);
        printf("\t\t** Voltando para Menu Principal **");
        getch();
        return 0;
    
    }

    Eu sei, é uma atividade... só tenho esse problema agora, ele n encontra o arquivo criado

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Crie uma conta ou entre para comentar

    Você precisar ser um membro para fazer um comentário






    Sobre o Clube do Hardware

    No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

    Direitos autorais

    Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

    ×