Prezado. Desta forma que voce fez, o arquivo OERROR, vem duplicado, ou seja esta errado, mas para inserrir o cabeçalho, acho que voce deve usar a seguinte função: bytesWritten = sprintf(buffer,"Aqui vem o texto \n"); fwrite(buffer, 1, bytesWritten, evilFile); tem que colocar antes do teste do arquivo.
Celso. Em 13 de setembro de 2011 08:53, Rafael Vicentini <[email protected]> escreveu: > Olhasó amigo... também estou participando do concurso mainframes 2011 da IBM. > Procurando ajuda pela 'net' né? > > Seguinte bro, primeiramente precisamos declarar a variavel evilFile e criação > do > output OEVIl logo apos a criação do ODIOUS > > #include <string.h> > FILE *odiousFile > FILE *evilfile /*variavel a ser inserida */ > > > > > /*************************************/ > /* Open file to write output */ > /*************************************/ > odiousFile = fopen("DD:ODIOUS", "w"); > if (odiousFile == NULL) > { > printf("open error: %d/%s\n", errno, strerror(errno)); > exit(99); > } > > /* codigo a ser inserido */ > evilFile = fopen("DD:OEVIL", "w"); > if (evilFile == NULL) > { > printf("open error: %d/%s\n", errno, strerror(errno)); > exit(99); > } > > > > Analisando o final do código, observei como ele obtém um número odioso: > int isOdious (int myInt) > { > > > /* Aqui ele gera o output pro arquivo error, pois se o número é igual a > zero.*/ > int NumberOfOnes; > NumberOfOnes=0; > if (myInt==0) { > bytesWritten = sprintf(buffer,"0 not supported!\n"); > fwrite(buffer, 1, bytesWritten, errorFile); > return 100; > } > > > > /* outro output pro arquivo error, caso for for maior que 1024 /* > if (myInt>1024) { > bytesWritten = sprintf(buffer,"%d too > large!\n",myInt); > fwrite(buffer, 1, bytesWritten, errorFile); > return 101; > } > while (myInt>0) { > if (myInt%2==1) { > NumberOfOnes=NumberOfOnes+1; > myInt=myInt-1; > } > myInt=myInt/2; > } > > > > /* Aqui ele divide a quantidade de 1`s por 2. Se restar 1, ele possui número > */ > /*impar de números 1 */ > > if (NumberOfOnes%2==1) > return 1; > else > return 0; > } > > > > > Então pensei o seguinte: "Puxa, na listagem, se o número não é Odious, então > ele > é Evil" > > Fiz as devidas inserções: > > /*************************************/ > /* Run program */ > /*************************************/ > > > while (fscanf(inputFile,"%d",&i) != EOF) { > if (isOdious(i)==1) { > bytesWritten = sprintf(buffer,"%d is odious\n",i); > fwrite(buffer, 1, bytesWritten, odiousFile); > } > > /* codigo a inserir /* > if (isOdious(i)==0) { > bytesWritten = sprintf(buffer,"%d is evil\n",i); > fwrite(buffer, 1, bytesWritten, evilFile); > } > > } > > > > Salve e de um submit naqueles dois Arquivos que a apostila pediu. Se retornar > nenhum erro, entro de PARTE2.DATA será criado o arquivo OEVIL. > Entao compare com o arquivo ODIOUS. > Os números contidos em uma listagem não estarão contidos na outra. > Verifique o arquivo de erros, se continua somente com as duas linahs > originais. > > Espero ter ajudado se ficou confuso o post, mais tarde te envio o número das > linhas a inserir o codigo. Entendo muito pouco de C, somente li algum tempo > atrás qndo me preparava para um concurso. Caso alguém que domine totalmente a > linguagem puder auxiliar, a discussão será mais rica. > > > > > Celso, estou com dificuldades em inserir o cabeçalho nos arquivos. Não conheço > bem a função fwrite. Voce consegue fazer isso? > > > > > > > > -- > Mais sobre o Ubuntu em português: http://www.ubuntu-br.org/comece > > Lista de discussão Ubuntu Brasil > Histórico, descadastramento e outras opções: > https://lists.ubuntu.com/mailman/listinfo/ubuntu-br > -- Mais sobre o Ubuntu em português: http://www.ubuntu-br.org/comece Lista de discussão Ubuntu Brasil Histórico, descadastramento e outras opções: https://lists.ubuntu.com/mailman/listinfo/ubuntu-br

