O comando $ man ascii no terminal mostra uma cópia da tabela ASCII acima
Por conta do '\0' no final das strings, lembre-se de sempre alocar um espaço a mais para suas strings. Claramente podemos implementar nossas próprias funções para resolver os problemas destacados acima, como faremos nas aulas práticas, mas existe uma biblioteca que já trás muitas dessas funções prontas. É a biblioteca string.h. Vejamos alguns exemplos simples. Lembre-se de incluir a bibliotaca de strings para poder usá-la no seu programa com #include <string.h>
Agora vamos explorar algumas aplicações em que empregamos strings. DNA ComplementarEsta foi uma das questões da maratona de programação do IFB realizada em 12 de maio de 2018. Ela involve calcular a fita complementar de um DNA dado como string. Explicação: Uma molécula de DNA é composta de duas fitas em forma de dupla-hélice contendo vários pares de base nitrogenada. Os membros de um par de base nitrogenada estão um em cada fita e cada base pode ser uma Adenina(A), Citosina(C), Guanina(G) ou Timina(T). Os pares de base nitrogenada são ligados por pontes de hidrogênio, de modo que uma Adenina de uma Fita só pode se ligar a uma Timina de outra fita (A-T), já uma Guanina de uma fita só pode se ligar a uma Citosina de outra fita (C-G). Assim, a partir de uma fita é possível determinar exatamente quais as bases que estarão na fita complementar. Em uma extremidade de uma fita de DNA, uma hidroxila do carbono-5 está livre enquanto na outra extremidade desta mesma fita, a hidroxila do carbono-3 é que estará livre. É neste sentido (5’3’), que o processo de replicação se inicia. Na fita complementar este sentido é invertido. Então temos uma situação assim: Fita superior no sentido 5'3'-> 5’ ACTTAACTAACTG 3’ ||||||||||||| Fita inferiot no sentido 3'5'-> 3’ TGAATTGATTGAC 5’Problema: Criar um programa que calcula a fita complementar, no sentido 5'3', de uma fita de DNA dada também no sentido 5'3'. A fita pode ter até 106 bases. #include <stdio.h> #include <string.h> // Calcula o complementar do DNA no sentido correto para a saída void comp(char* dna, int n, char* comp){ int i; char ch; // Percorrer fita original de trás para a frente. Escrever a nova de frente para trás. for(i = 0; i < n; i++){ // A - T; C - G; ch = dna[n-i-1]; // char original if(ch == 'A'){ comp[i] = 'T'; } else if(ch == 'T'){ comp[i] = 'A'; } else if(ch == 'C'){ comp[i] = 'G'; } else{ comp[i] = 'C'; } } comp[n] = '\0'; // fim da string } int main(){ // max de 106 bases char dna[1000005]; char compl[1000005]; // string resposta scanf("%s", dna); // nao precisa de & antes de string int n = strlen(dna); comp(dna, n, compl); printf("%s\n", compl); // mostra resposta } Code Execution Download CodePangramaExplicação: Pangrama, ou pantograma, é uma frase em que são usadas todas as letras do alfabeto de determinada língua. Problema: Dada uma frase, verificar se esta frase é ou não um pangrama. Um dos pangramas mais conhecidos é "The quick brown fox jumps over the lazy dog." #include <stdio.h> #include <string.h> int ehMaiuscula(char ch){ // 'A' 'Z' if((ch >= 65) && (ch <=>= 97) && (ch <=> Code Execution Download Code
Observação : Este método só funciona para números com apenas um dígito. Se escrever em um arquivo de texto a palavra "APC" e salvá-lo (exemplo: apc.txt), é possível gerar um arquivo em hexadecimal correspondente ao arquivo com o comando: O arquivo apcEmBinario.txt será mais ou menos como esse. Isso acontece porque cada char ocupa exatamente 1 byte. Desta forma, a representação binária do arquivo (saída do comando xxd) traduz exatamente os códigos dos caracteres utilizados no texto. Lembre-se que cada dígito hexadecimal corresponde a 4 dígitos binários. Assim, 2 dígitos hex representam 8 bits, ou seja, 1 byte. |