daya 0 Denunciar post Postado Maio 7, 2009 Boa tarde pessoal!!!!! estou tendo problemas nesse codigo: void gravaConf(char *sConf) { FILE *fp; char *linhaTemp, *aux; long int linhaIni,linhaFim; long int i; aloca(&linhaTemp,25); aloca(&aux,7); //Busca linha inicial no temp if((fp=fopen("TEMP","r"))!=NULL) { fseek(fp, posTMP,SEEK_SET); fread(linhaTemp,25,1, fp); sprintf(aux,"%.6s",linhaTemp+7); linhaIni = atoi(aux); fread(linhaTemp,25,1, fp); sprintf(aux,"%.6s",linhaTemp+7); linhaFim = atol(aux); } fclose(fp); if(linhaIni>=linhaFim) { if((fp=fopen("PEDIDO.TXT","r"))!=NULL) //pega última linha do pedido. { fseek(fp,0,SEEK_END); linhaFim = ((ftell(fp))/118); } fclose(fp); } // atualiza os itens do pedido if((fp=fopen("PEDIDO.TXT","r+"))!=NULL) { for(i=linhaIni;i<linhaFim;++i) { fseek(fp, (i * 119)+116,SEEK_SET); fwrite(sConf,1,1, fp); } } fclose(fp); free(linhaTemp); free(aux); gravaConfTMP(sConf); } se eu declarar o "i" apenas como int ele da estouro de variavel e se declarar como long pega sujeira da memória, alguém teria alguma solução para isso? desde já obrigada. Compartilhar este post Link para o post Compartilhar em outros sites
VictorCacciari 42 Denunciar post Postado Maio 7, 2009 Precisamente, qual o erro que dá ao você declarar como int? E ao declarar como long? As vezes o SIGSEGV não é por causa de integers. Tentou declarar como "unsigned int"? em que linha ocorre o erro? Compartilhar este post Link para o post Compartilhar em outros sites