Para os exercícios desta aula, você pode utilizar IDEs online como: https://www.onlinegdb.com/online_c_compiler https://www.programiz.com/c-programming/online-compiler/
Uma string é:
Em C, uma string é simplesmente um array de caracteres terminados por \0.
\0
printf
strlen
char nome[] = "Joao"; // Na memória: 'J', 'o', 'a', 'o', '\0' (5 bytes)
Formas de inicializar:
char nome[] = "Carlos";
char nome[10] = "Carlos";
char nome[] = {'C','a','r','l','o','s','\0'};
#include <stdio.h> int main() { char nome[] = "Ana"; printf("%s", nome); return 0; }
O especificador %s é utilizado para imprimir strings.
%s
Utilizando scanf:
scanf
#include <stdio.h> int main() { char nome[20]; scanf("%s", nome); printf("%s", nome); return 0; }
Maria Silva
Maria
#include <stdio.h> int main() { char nome[20]; fgets(nome, 20, stdin); printf("%s", nome); return 0; }
fgets lê até o limite ou newline (\n).
fgets
\n
Podemos utilizar um loop for para percorrer strings:
for
#include <stdio.h> int main() { char texto[] = "Programação"; for(int i = 0; texto[i] != '\0'; i++) { printf("%c\n", texto[i]); } return 0; }
%c é utilizado para imprimir caracteres individuais
%c
Para percorrer strings utilizando um loop while, podemos utilizar como condição de parada o \0 e, assim, encerrar o loop:
while
#include <stdio.h> int main() { char texto[] = "Radiacao"; int contador = 0; while(texto[contador] != '\0') { contador++; } printf("Quantidade: %d", contador); return 0; }
Escreva um programa em C que:
ASCII (American Standard Code for Information Interchange): Padrão para mapear caracteres em valores inteiros decimais.
Exemplos:
01000001
int
Em C, um char é um tipo inteiro pequeno (int). Quando você faz aritmética com caracteres, o compilador trata eles como seus valores ASCII subjacentes.
char
char letra = 'B'; printf("%d", letra); // Imprime: 66 char proximaLetra = letra + 3; printf("\nA próxima é %c e tem valor %d)", proximaLetra, proximaLetra); // Saída esperada: E (Valor: 69)
#include <string.h>
Principais Funções:
strlen(s)
strcpy(dest, src)
strcat(dest, src)
strcmp(a, b)
#include <stdio.h> #include <string.h> int main() { char texto[] = "Tomografia"; printf("%lu", strlen(texto)); return 0; }
Resultado:
10
strcpy
#include <stdio.h> #include <string.h> int main() { char origem[] = "MRI"; char destino[20]; strcpy(destino, origem); printf("%s", destino); return 0; }
destino = "MRI"
strcat
char a[30] = "Linguagem "; char b[] = "C"; strcat(a, b);
"Fisica Medica"
strcmp
Overflow de String: A string excede o tamanho do vetor.
char nome[5]; scanf("%s", nome);
Entrada:
Linguagem
Esquecer o '\0':
'\0'
char texto[3] = {'O', 'K'};
Armazena os caracteres diretamente em um bloco contíguo na memória.
#include <stdio.h> int main() { char nomes[3][20] = { "Ana", "Bob", "Charlie" }; printf("Tamanho total: %zu\n", sizeof(nomes)); printf("%s\n", nomes[0]); return 0; }
Note que o tamanho das strings é fixo por linha. Isso desperdiça memória se strings forem curtas.
#include <stdio.h> int main() { char nomes[3][20] = {"Ana", "Bob", "Charlie"}; for(int i = 0; i < 3; i++) { for(int j = 0; j < 20; j++) { printf("%c", nomes[i][j]); // Acessa caractere específico if(nomes[i][j] == '\0') { break; // Para no fim da string }; } printf("\n"); } return 0; }
Dica: Use strlen ou verifique \0 para não imprimir lixo.
Fonte da Imagem: Asmi Pai @Unsplash
String: Array de char + \0.
Strings são fundamentais porque:
Material adicional:
Dúvidas e Discussão
fgets()
strcmp("B", "A")
Crie um programa que leia uma string e exiba:
Crie um programa que leia dois nomes de pacientes e informe:
Crie um programa que leia uma string e verifique se ela é um palíndromo.
Palíndromo é toda palavra ou frase que pode ser lida de trás para frente e que, independente da direção, mantém o seu sentido. Exemplos:
Note que na tabela ASCII letras maiúsculas e minúsculas possuem códigos diferentes.
**Erro Comum:** ```c char nome[5] = "Hello"; // Erro de tempo de compilação! // "Hello" tem 6 bytes (H,e,l,l,o,\0). Array tem espaço para 5. ``` *Sempre reserve `n + 1` caracteres para uma string de tamanho `n`.*