c/c++语言开发共享C错误,需要帮助

我有这个最后的工作项目,我过去几天一直在做,我吓坏了,因为截止日期在这里,我无法找到我的代码有什么问题,我做的一切给了我“分段错误”错误,但是当我编译它不会给我任何错误。 这是以下代码的链接: http : //pastebin.com/tqWc6Dd0这里是代码本身:(但我建议使用链接,忽略评论,葡萄牙语乱码)。

#include #include typedef struct{ char nomenavio; int codigonavio; char tiponavio; int tonelagemnavio; int anonavio; char paisnavio; char armadornavio; }NAVIO; typedef struct{ int numportos; int milhas; int tonelagemtotal; int consumototal; }TOTAL; ///////////////////////////////////////////////////////////&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //FUNCOES DE MENUS///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// int menuprincipal(){ int controlo=0; printf("n Ola, escolha a opcao desejada:nt1-ADICIONAR NOVO NAVIOnt2-CARREGAR FICHEIROSnt3-LISTARn"); scanf("%d", &controlo); return(controlo); } int menulista(){ int controlomenu; printf("n LISTAGEM DOS NAVIOS!n Escolha a opcao que pretenden t1-LISTAGEM TOTAL DOS NAVIOSnt2-LISTAGEM DOS NAVIOS A PARTIR DE UMA CHAVEnt3-LISTAGEM A PARTIR DE UM NOMEn"); scanf("%d", &controlomenu); return(controlomenu); } /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //FUNCOES DE LISTAGEM DOS NAVIOS///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// void listarnavios(FILE*lista, NAVIO*lstNavio){ do{ fscanf(lista,"%c %d %c %d %d %c %cn", lstNavio->nomenavio, &lstNavio->codigonavio, lstNavio->tiponavio, &lstNavio->tonelagemnavio, &lstNavio->anonavio, &lstNavio->armadornavio); printf("%c %d %c %d %d %c %cn", lstNavio->nomenavio, lstNavio->codigonavio, lstNavio->tiponavio, lstNavio->tonelagemnavio, lstNavio->anonavio, lstNavio->armadornavio); }while(!feof(lista)); } void anonavios(FILE*lista, int criterio, NAVIO*lstNavio){ do{ fscanf(lista,"%c %d %c %d %d %c %cn", lstNavio->nomenavio, &lstNavio->codigonavio, lstNavio->tiponavio, &lstNavio->tonelagemnavio, &lstNavio->anonavio, lstNavio->armadornavio); if(criterio==lstNavio->anonavio){ printf("%c %d %c %d %d %c %c", lstNavio->nomenavio, lstNavio->codigonavio, lstNavio->tiponavio, lstNavio->tonelagemnavio, lstNavio->anonavio, lstNavio->armadornavio); } }while(!feof(lista)); } void armadornavios(FILE*lista, char criterio, NAVIO*lstNavio){ do{ fscanf(lista,"%c %d %c %d %d %c %cn", lstNavio->nomenavio, &lstNavio->codigonavio, lstNavio->tiponavio, &lstNavio->tonelagemnavio, &lstNavio->anonavio, lstNavio->armadornavio); if(criterio==lstNavio->armadornavio){ printf("%c %d %c %d %d %c %c", lstNavio->nomenavio, lstNavio->codigonavio, lstNavio->tiponavio, lstNavio->tonelagemnavio, lstNavio->anonavio, lstNavio->armadornavio); } }while(!feof(lista)); } void tonelagemnavios(FILE*lista, int criterio, NAVIO*lstNavio){ do{ fscanf(lista,"%c %d %c %d %d %c %cn", lstNavio->nomenavio, &lstNavio->codigonavio, lstNavio->tiponavio, &lstNavio->tonelagemnavio, &lstNavio->anonavio, &lstNavio->armadornavio); if(criterio>=lstNavio->tonelagemnavio){ printf("%c %d %c %d %d %c %c", lstNavio->nomenavio, lstNavio->codigonavio, lstNavio->tiponavio, lstNavio->tonelagemnavio, lstNavio->anonavio, lstNavio->armadornavio); } }while(!feof(lista)); } void tiponavios(FILE*lista, char criterio, NAVIO*lstNavio){ do{ fscanf(lista,"%c %d %c %d %d %c %cn", lstNavio->nomenavio, &lstNavio->codigonavio, lstNavio->tiponavio, &lstNavio->tonelagemnavio, &lstNavio->anonavio, &lstNavio->armadornavio); if(criterio==lstNavio->tiponavio){ printf("%c %d %c %d %d %c %c",lstNavio->nomenavio, lstNavio->codigonavio, lstNavio->tiponavio, lstNavio->tonelagemnavio,lstNavio->anonavio, lstNavio->armadornavio); } }while(!feof(lista)); } void nomepornavio(FILE*lista, char nomedonavio, NAVIO*lstNavio){ do{ fscanf(lista,"%c %d %c %d %d %c %cn", lstNavio->nomenavio, &lstNavio->codigonavio, lstNavio->tiponavio, &lstNavio->tonelagemnavio, &lstNavio->anonavio, lstNavio->armadornavio); if(nomedonavio==lstNavio->nomenavio){ printf("%c %d %c %d %d %c %c", lstNavio->nomenavio, lstNavio->codigonavio, lstNavio->tiponavio, lstNavio->tonelagemnavio, lstNavio->anonavio, lstNavio->armadornavio); } }while(!feof(lista)); } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //FUNCOES DE ADICIONAR REGISTOS////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// void adicionareg(FILE *lista, FILE *total, NAVIO *lstNavio, TOTAL *lstTotal){ printf("ne depois vim aqui parar!"); int tempor; tempor=0; do{ fscanf(lista,"%c %d %c %d %d %c %cn", lstNavio->nomenavio, &lstNavio->codigonavio, lstNavio->tiponavio, &lstNavio->tonelagemnavio, &lstNavio->anonavio, &lstNavio->armadornavio); if(temporcodigonavio){ tempor=lstNavio->codigonavio; } }while(!feof(lista)); tempor++; printf("nAdicionar registo do navio:"); printf("nInsira o nome do navio"); scanf("%c",lstNavio->nomenavio); printf("nInsira o tipo do navio"); scanf("%c",lstNavio->tiponavio); printf("nInsira a tonelagem do navio"); scanf("%d",&lstNavio->tonelagemnavio); printf("nInsira o ano do navio"); scanf("%d",&lstNavio->anonavio); printf("nInsira o armador"); scanf("%c",lstNavio->armadornavio); printf("nO novo navio vai ter o codigo %d", tempor); fprintf(lista,"n%c %d %c %d %d %c %c", lstNavio->nomenavio, tempor, lstNavio->tiponavio, lstNavio->tonelagemnavio, lstNavio->anonavio, lstNavio->armadornavio); lstTotal->numportos=0; lstTotal->milhas=0; lstTotal->tonelagemtotal=0; lstTotal->consumototal=0; fprintf(total, "n%d %d %d %d %d", tempor, lstTotal->numportos, lstTotal->milhas, lstTotal->tonelagemtotal, lstTotal->consumototal); } void carregarnovos(FILE*lista, FILE*total, FILE*novalista, NAVIO*lstNavio, TOTAL*lstTotal){ int tempor; tempor=0; do{ fscanf(lista,"%c %d %c %d %d %c %cn", lstNavio->nomenavio, &lstNavio->codigonavio, lstNavio->tiponavio, &lstNavio->tonelagemnavio, &lstNavio->anonavio, lstNavio->armadornavio); if(temporcodigonavio){ tempor=lstNavio->codigonavio; } }while(!feof(lista)); tempor++; lstTotal->numportos=0; lstTotal->milhas=0; lstTotal->tonelagemtotal=0; lstTotal->consumototal=0; do{ fscanf(novalista,"%c %c %d %d %c %cn",lstNavio->nomenavio, lstNavio->tiponavio, &lstNavio->tonelagemnavio, &lstNavio->anonavio, lstNavio->armadornavio); fprintf(lista, "n%c %d %c %d %d %c %c", lstNavio->nomenavio, lstNavio->tiponavio, lstNavio->tonelagemnavio, lstNavio->anonavio, lstNavio->armadornavio); fprintf(total, "n%d %d %d %d %d", tempor, lstTotal->numportos, lstTotal->milhas, lstTotal->tonelagemtotal, lstTotal->consumototal); tempor++; }while(!feof(novalista)); } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //FUNCAO MAIN///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// main(){ NAVIO *lstNavio[1]; TOTAL *lstTotal[1]; FILE *lista; FILE *novalista; FILE *total; int ctrlmenuprincipal, ctrlmenulista; int ctrlchave; char criteriochar[20], nomedonavio[30]; int criterioint; char nomenovalista[30]; ctrlmenuprincipal=menuprincipal(); ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //OPCAO 1 do menu principal, permite ao utilizador inserir um novo registo na lista principal.//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// if(ctrlmenuprincipal==1){ lista=fopen("navios.txt", "a+"); if(lista==NULL){ printf("Erro na abertura do ficheiro"); exit(1); } total=fopen("naviosRef.txt", "a"); if(total==NULL){ printf("Erro na abertura do ficheiro"); exit(1); } adicionareg(lista, total, *lstNavio, *lstTotal); fclose(lista); fclose(total); } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //OPCAO 2 do menu principal, adicionar a lista principal, os registos que estao na lista novosNavios.txt".//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// if(ctrlmenuprincipal==2){ printf("nInsira o nome da lista com os novos navios:"); scanf("%c", nomenovalista); lista=fopen("navios.txt", "a+"); if(lista==NULL){ printf("Erro na abertura do ficheiro"); exit(1); } total=fopen("naviosRef.txt", "a"); if(total==NULL){ printf("Erro na abertura do ficheiro"); exit(1); } novalista=fopen("novosNavios.txt", "r+"); if(novalista==NULL){ printf("Erro na abertura do ficheiro"); exit(1); } carregarnovos(lista, total, novalista, *lstNavio, *lstTotal); fclose(lista); fclose(total); fclose(novalista); } /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //OPCAO 3 do menu principal, listagem de navios, inicia outro menu, que permite ao utilizador escolher o tipo de listagem desejada.//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// if(ctrlmenuprincipal==3){ ctrlmenulista=menulista(); lista=fopen("navios.txt", "r+"); if(lista==NULL){ printf("Erro na abertura do ficheiro"); exit(1); } printf("sera que chego aqui?"); if(ctrlmenulista==1){ printf("bugabuga"); listarnavios(lista, *lstNavio); } if(ctrlmenulista==2){ printf("nInsira a chave desejadant1-Armadornt2-Anont3-Tipont4-Tonelagemn"); scanf("%d", &ctrlchave); printf("%d", ctrlchave); if(ctrlchave==1){ printf("nInsira o nome do Armador:");scanf("%cn",criteriochar); armadornavios(lista, *criteriochar, *lstNavio); } if(ctrlchave==2){ printf("nInsira o Ano:");scanf("%dn",criterioint); anonavios(lista, criterioint, *lstNavio); } if(ctrlchave==3){ printf("nInsira o tipo da embarcação:");scanf("%cn",criteriochar); tiponavios(lista, *criteriochar, *lstNavio); } if(ctrlchave==4){ printf("nInsira a tonelagem:");scanf("%dn",criterioint); tonelagemnavios(lista, criterioint, *lstNavio); } } if(ctrlmenulista==3){ printf("nInsira o nome do navio:"); scanf("%cn", nomedonavio); nomepornavio(lista, *nomedonavio, *lstNavio); } fclose(lista); } } 

谢谢你的时间。

    检查fscanf调用。 有时你不应该在你应该去的地址。

    例如,在listarnavios

     fscanf(lista,"%c %d %c %d %d %c %cn", lstNavio->nomenavio, &lstNavio-codigonavio, lstNavio->tiponavio, &lstNavio->tonelagemnavio, &lstNavio->anonavio, &lstNavio-armadornavio); 

    它有lstNavio->nomenavio而不是&lstNavio->nomenavio ,而且这不是唯一的。

      以上就是c/c++开发分享C错误,需要帮助相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/519093.html

      (0)
      上一篇 2020年12月5日
      下一篇 2020年12月5日

      精彩推荐