Baixe o app para aproveitar ainda mais
Prévia do material em texto
https://fmu.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_TEST_PLAYER&COURSE_ID=_667793… 1/9 Pergunta 1 Em diversas situações, nos arquivos textuais, faz-se necessária a substituição de palavras. Para essa questão, analise o código a seguir que coleta linha por linha de um arquivo texto e realiza a substituição de palavras. Na análise, preencha as lacunas com os códigos correspondentes. #include <stdio.h> #include <string.h> void ProcessaLinha(char linha[],char nome_ret[],char nova_palavra[]) { int i=0; char tmp[40]; for(;i<strlen(linha)-strlen(nome_ret);i++) if(!strncmp(&linha[i],nome_ret,strlen(nome_ret))) { strncpy(tmp,linha,i); tmp[i]='\x0'; strcat(tmp,nova_palavra); strcat(tmp,&linha[i+strlen(nome_ret)]); strcpy(linha,tmp); } } int main() { char linha[40],nome_ret[11],nova_palavra[11]; FILE *arq,*arqtmp; arq=fopen("atividade.txt","___"); 1 em 1 pontos 27/04/2021 Revisar envio do teste: ATIVIDADE 4 (A4) – GRA1033 ... https://fmu.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_TEST_PLAYER&COURSE_ID=_667793… 2/9 Resposta Selecionada: Resposta Correta: Comentário da resposta: if(arq==NULL) { printf("Erro de abertura de arquivo origem."); return 0; } arqtmp=fopen("atividade_tmp.txt","___"); if(arq==NULL) { printf("Erro de abertura do arquivo temporario."); return 0; } printf("Palavra a ser substituida (ate 10 letras): "); gets(nome_ret); printf("Nova palavra (ate 10 letras): "); gets(nova_palavra); while(1) { fgets(linha,40,arq); //fgets() lê toda a linha até o <enter> if(feof(arq)) break; ProcessaLinha(linha,nome_ret,nova_palavra); ____(linha,arqtmp); } fclose(arq); fclose(arqtmp); if(remove("atividade.txt")) printf("Erro na remocao.\n"); else if(rename("____", "____")) printf("Erro no renomeamento.\n"); return 0; } Assinale a alternativa que você julgue possuir a sequência correta. . r ; w ; fputs ; atividade_tmp.txt ; atividade.txt . . r ; w ; fputs ; atividade_tmp.txt ; atividade.txt . Parabéns! Sua resposta foi a correta! Você observou corretamente os tipos de abertura necessários para o arquivo origem das informações e para o arquivo temporário; e, também, a necessidade do uso da função “ fputs()” para a gravação no arquivo temporário e os parâmetros da função “ rename()”. Pergunta 2 Na linguagem C, encontramos dois tipos de arquivos: os arquivos textuais e os arquivos binários. 1 em 1 pontos 27/04/2021 Revisar envio do teste: ATIVIDADE 4 (A4) – GRA1033 ... https://fmu.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_TEST_PLAYER&COURSE_ID=_667793… 3/9 Resposta Selecionada: Resposta Correta: Comentário da resposta: Nos arquivos textuais, as informações são gravadas como strings, independentes de seu tipo; porém, para tal, devemos usar algumas funções especí�cas. Para os comandos abaixo, assinale com (T) aquele(s) que serve(m) unicamente para arquivos textuais, com (B) para arquivos binários e, com (A) aquele(s) que serve(m) para ambos. ( ) fwrite() ( ) fputs() ( ) fputc() ( ) fread() ( ) fopen() Assinale a alternativa cuja ordem você julgue ser correta. B, T, T, B, A. B, T, T, B, A. Parabéns! Sua resposta foi a correta! As funções “ fputs()” e “ fputc()” são utilizadas exclusivamente nos arquivos textuais para a gravação de strings e de caracter, respectivamente. Para os arquivos binários, utiliza-se “ fwrite()” e “ fread()”. A abertura é realizada por meio da função “ fopen()” independentemente do tipo do arquivo. Pergunta 3 Suponha que existe, em um arquivo textual, uma matriz 4x4 que relaciona os custos de um certo produto A (linhas) combinado com um produto B (colunas) como ilustra o exemplo a seguir: 00 03 06 02 03 00 04 07 06 04 00 01 02 07 01 00 O produto não poderá ser combinado com ele mesmo. Por exemplo, combinando-se o produto dois com o produto três, teremos o valor 01. Cada valor de custo é representado, sempre, por dois caracteres e separados por um espaço em branco. Analise o código a seguir que imprima, na tela, o custo da combinação solicitada pelo usuário e preencha as lacunas. #include <stdio.h> #include <string.h> #include <stdlib.h> int main() { char linha[30],custoStr[3]; int prodA,prodB,i=0; FILE *arq; arq=fopen("matrizcustos.txt","___"); if(arq==NULL) { printf("Erro de abertura de arquivo origem."); return 0; 1 em 1 pontos 27/04/2021 Revisar envio do teste: ATIVIDADE 4 (A4) – GRA1033 ... https://fmu.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_TEST_PLAYER&COURSE_ID=_667793… 4/9 Resposta Selecionada: Resposta Correta: Comentário da resposta: } printf("Produto A (de 0 a 3):"); scanf("%d",&prodA); printf("Produto B:(de 0 a 3): "); scanf("%d",&prodB); for(;i<=prodA;i++) ____(linha,30,arq); printf("linha selecionada: %s\n",linha); strncpy(custoStr,&linha[___],2); custoStr[3]='\x0'; fclose(arq); printf("Custo = %d",atoi(custoStr)); return 0; } Assinale a alternativa que você julgue ser a correta. . r ; fgets ; prodB*3 . . r ; fgets ; prodB*3 . Parabéns! Sua resposta foi a correta! Você associou corretamente os trechos de código às lacunas observando de maneira certa o modo de abertura do arquivo (“ r”), a função de leitura de uma linha a partir de um arquivo textual (“ fgets()”) e o deslocamento dentro da linha (“ prodB*3”). Pergunta 4 Em arquivos textuais, quando desejamos substituir uma informação com o mesmo tamanho da nova informação, podemos realizar sobrescrita sem a necessidade de criação de arquivo temporário para receber a nova versão do conteúdo. Para essa questão, analise o código a seguir, que realiza a troca do caractere “i” pelo caractere “y” na primeira linha do arquivo. Em sua análise preencha as lacunas. #include <stdio.h> #include <string.h> int main() { FILE *arq; char linha[40]; long pos; int i; arq=fopen("atividade.txt","___"); if(arq==NULL) { 1 em 1 pontos 27/04/2021 Revisar envio do teste: ATIVIDADE 4 (A4) – GRA1033 ... https://fmu.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_TEST_PLAYER&COURSE_ID=_667793… 5/9 Resposta Selecionada: Resposta Correta: Comentário da resposta: printf("Erro de abertura do arquivo.\n"); return 0; } pos=_____; //armazenar a posicao corrente do ponteiro de arquivo. fgets(linha,40,arq); for(i=0;i<strlen(linha);i++) if(linha[i]=='i') linha[i]='y'; _____; //reposicionar no ponto anterior aa leitura _____; //gravacao da linha. fclose(arq); return 0; } Assinale a alternativa que você julgue ser a correta. . r+ ; ftell(arq) ; fseek(arq,pos,SEEK_SET); fputs(linha,arq) . . r+ ; ftell(arq) ; fseek(arq,pos,SEEK_SET); fputs(linha,arq) . Parabéns! Sua resposta foi a correta! Você deve ter notado que podemos salvar a posição do ponteiro do arquivo para que possamos restaurar a posição e sobrescrever o conteúdo. Para isso, foram usadas as funções “ ftell()” e “ fseek()”, respectivamente. Pergunta 5 Resposta Selecionada: Resposta Correta: Na linguagem de programação C, podemos encontrar dois tipos básicos de arquivos: os arquivos binários e os arquivos texto. A forma de diferenciação, em relação à manipulação, consiste no uso de formas de abertura e funções especí�cas. Para essa questão, assinale, nas a�rmativas abaixo, com (B) caso relacione-se aos arquivos binários e, com (T) caso relacione-se aos arquivos textuais. ( ) Para manipular o arquivo, usa-se as funções “ fread()” e “ fwrite()”. ( ) É totalmente legível caso seja aberto em editores de texto do tipo “bloco de notas”. ( ) Por exemplo, uma informação numérica, ocupa neste tipo de arquivo, uma quantidade de bytes compatível com a quantidade de dígitos de seu valor. ( ) Neste tipo de arquivo, tende-se a gastar menos espaço de armazenamento pois cada variável gasta exatamente o seu tamanho ocupado na memória principal; valor do retorno da função “ sizeof()”. Assinale a alternativa queapresente a sequência correta. B, T, T, B. 1 em 1 pontos 27/04/2021 Revisar envio do teste: ATIVIDADE 4 (A4) – GRA1033 ... https://fmu.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_TEST_PLAYER&COURSE_ID=_667793… 6/9 Comentário da resposta: B, T, T, B. Parabéns! Sua resposta foi a correta! Realmente, os arquivos binários possuem como vantagens a sua maior e�ciência no armazenamento e manipulação das informações armazenadas pois fazem uma correspondência exata com os tipos de dados manipulados pelos próprios programas. Pergunta 6 Resposta Selecionada: Resposta Correta: Comentário da resposta: Na programação em C, podemos encontrar duas formas distintas de se abrir um arquivo (textual ou binária) aliadas aos modos que esse arquivo será manipulado. Para essa questão, analise o código a seguir, que manipula um arquivo binário, e preencha a lacuna corretamente. . . . FILE *arq; int codigo; char bu�er[35]="algo a ser escrito no arquivo\n"; arq=fopen("exercicio.dat","____"); if(arq==NULL) { printf("Erro de abertura do arquivo.\n"); return 0; } ... if(!fread(&codigo,sizeof(int),1,arq)) //caso o arquivo ainda esteja vazio codigo=0; else codigo++; ... if(!fwrite(&codigo,sizeof(int),1,arq)) printf("erro na gravacao do codigo.\n"); else if(!fwrite(bu�er,35,1,arq)) printf("Erro na gravacao do bu�er.\n"); fclose(arq); . . . Considerando que, caso o arquivo não exista, será criado um novo e caso exista, os dados deverão ser mantidos, assinale a alternativa que corresponda ao preenchimento da lacuna. ab+. ab+. Parabéns! Sua resposta foi a correta! Você observou corretamente a consideração �nal: “ caso o arquivo não exista, será criado um novo e caso exista, os dados deverão ser mantidos”. Caso fosse colocado “ r+”, o arquivo deveria existir para ser aberto; caso a abertura fosse “ w+”, o arquivo sempre 1 em 1 pontos 27/04/2021 Revisar envio do teste: ATIVIDADE 4 (A4) – GRA1033 ... https://fmu.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_TEST_PLAYER&COURSE_ID=_667793… 7/9 seria criado. Então, sobra o modo “ a+”. Pelo fato de aparecer “ fwrite()” e “ fread()”, então, o arquivo é binário. Sendo assim, “ ab+”. Pergunta 7 Resposta Selecionada: Resposta Correta: Comentário da resposta: Para a manipulação de um arquivo, deve-se antes, realizar a sua abertura através do comando “ fopen()”. Tal comando permite associar o nome físico do arquivo assim como a sua forma de abertura. Para essa questão, analise as linhas de código a seguir: FILE *arq; arq = fopen(“arquivo.dat”,”wb+”); Assinale a alternativa que você julgue ser a correta. Será aberto um arquivo binário “ arquivo.dat” permitindo-se operações de leitura e de escrita. Sempre será criado um arquivo novo, destruindo o conteúdo caso já exista um arquivo com o mesmo nome. Será aberto um arquivo binário “arquivo.dat” permitindo-se operações de leitura e de escrita. Sempre será criado um arquivo novo, destruindo o conteúdo caso já exista um arquivo com o mesmo nome. Parabéns! Sua resposta foi a correta! Você observou bem que foi incluído o símbolo ”+”, que indica que operações de escrita poderão ser realizadas além das operações de escrita do símbolo “w”. O “w” indica ainda, que sempre será criado um arquivo novo, destruindo o conteúdo do arquivo caso já exista. Além destas informações, encontramos o símbolo “b” denotando que o arquivo a ser aberto será do tipo binário. Pergunta 8 Para a manipulação de arquivos temos que, inicialmente, realizar a instanciação do ponteiro do arquivo por intermédio da operação de abertura. Para tanto, usa-se a função “ fopen()” passando como parâmetros o nome físico do arquivo e o modo de abertura. Para essa questão, suponha que o programa em questão, tenha em seu código, as seguintes linhas: if(! fread (&item,sizeof(tipo_do_item),1,arq)) return -1; ... if(! fwrite (&item,sizeof(tipo_do_item),1,arq)) return -2; ... Levando em conta as linhas de código acima, o fato de que o arquivo binário deve existir previamente e as suas informações deverão ser mantidas, selecione a opção que contém a forma de abertura adequada. 1 em 1 pontos 1 em 1 pontos 27/04/2021 Revisar envio do teste: ATIVIDADE 4 (A4) – GRA1033 ... https://fmu.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_TEST_PLAYER&COURSE_ID=_667793… 8/9 Resposta Selecionada: Resposta Correta: Comentário da resposta: . arq=fopen("arq.dat","rb+"); . . arq=fopen("arq.dat","rb+"); . Parabéns! Sua resposta foi a correta! O fato do código apresentar as funções “ fread()” e “ fwrite()” já determina que está sendo manipulado um arquivo binário. Como o arquivo deve existir previamente e serão realizadas operações de leitura e de escrita, o modo de abertura deverá ser, necessariamente “ rb+”. Pergunta 9 Resposta Selecionada: Resposta Correta: Comentário da resposta: Linguagens estruturadas permitem que informações sejam armazenadas e recuperadas de memórias não voláteis. Porém, elas são dependentes de funções e estruturas exportadas pelo sistema operacional. Dadas as a�rmativas a seguir, classi�que-as V para verdadeiro e F para falso. ( ) Ponteiros de arquivos (“ FILE *”) devem ser alocados dinamicamente através do uso “ malloc()” antes de serem utilizados. ( ) Ponteiros de arquivos referenciam uma posição de memória mantida pelo sistema operacional que armazena atributos e status dos arquivos manipulados. ( ) Para a manipulação da posição corrente do arquivo podemos usar as funções “ ftell()” e “ fseek()” que devolvem e setam a posição corrente do arquivo, respectivamente. ( ) A função “fread ()” retorna EOF quando chegar ao �nal do arquivo. Assinale a alternativa que você julgue ter a sequência correta. F, V, V, F. F, V, V, F. Parabéns! Sua resposta foi a correta! Descritores de arquivos são estruturas mantidas pelo sistema operacional e são endereçados através dos ponteiros de arquivos, que são instanciados pelo uso da função “fopen ()”. A função “fread ()” retorna a quantidade de itens lidos. Pergunta 10 Suponha a existência de um arquivo textual onde as palavras são separadas pelo caractere “$” e pelo caractere “%”. Suponha também, que há a necessidade de se implementar um programa para imprimir, na tela, o conteúdo do referido arquivo de modo que, ao encontrar o caractere “$” imprime-se um espaço em branco e, ao encontrar o “%” pula-se para a linha seguinte da tela. Para essa questão, analise o código a seguir e preencha as lacunas. #include <stdio.h> int main() { 1 em 1 pontos 1 em 1 pontos 27/04/2021 Revisar envio do teste: ATIVIDADE 4 (A4) – GRA1033 ... https://fmu.blackboard.com/webapps/late-course_content_soap-BBLEARN/Controller?ACTION=OPEN_TEST_PLAYER&COURSE_ID=_667793… 9/9 Terça-feira, 27 de Abril de 2021 11h11min44s BRT Resposta Selecionada: Resposta Correta: Comentário da resposta: FILE *arq; char carac; arq=fopen("texto.txt","___"); if(arq==NULL) { printf("Erro de abertura do arquivo.\n"); return 0; } while(1) { carac = ____(arq); if(___) break; switch(carac) { case '$': carac = ' '; break; case '%': carac = '\n'; break; } printf("%c",carac); } fclose(arq); return 0; } Assinale a alternativa que você julgue ser a correta. . r ; getc ; carac == EOF. . r ; getc ; carac == EOF. Parabéns! Sua resposta foi a correta! Você associou acertadamente o modo de abertura de arquivo textual para somente leitura (parâmetro “r”), usou a função correta para ler um caractere do arquivo textual (“ getc()”) e testou corretamente o �m do arquivo (“ carac == EOF”).
Compartilhar