Introdução
Neste laboratório, você aprenderá como criar e manipular strings na programação C. Explorará diferentes métodos para definir strings, formatá-las usando printf, determinar seu comprimento com strlen e compará-las com strncmp. Essas operações fundamentais de string são essenciais para construir aplicações C robustas e flexíveis.
O laboratório cobre os seguintes passos: definir strings usando notação de ponteiro, definir strings usando notação de array local, formatar strings com printf, determinar o comprimento da string com strlen e comparar strings com strncmp. Ao final deste laboratório, você terá uma sólida compreensão de como trabalhar com strings em C e será capaz de aplicar essas técnicas em seus próprios projetos.
Definir Strings Usando Notação de Ponteiro
Neste passo, você aprenderá como definir strings usando notação de ponteiro em C. A notação de ponteiro oferece uma maneira flexível de criar e manipular strings na programação C.
Primeiro, vamos criar um novo arquivo para demonstrar a definição de string com notação de ponteiro:
cd ~/project
touch string_pointer.c
Agora, insira o seguinte código:
#include <stdio.h>
int main() {
// Define a string usando notação de ponteiro
char *greeting = "Hello, C Programming!";
// Imprime a string
printf("Greeting: %s\n", greeting);
return 0;
}
Compile e execute o programa:
gcc string_pointer.c -o string_pointer
./string_pointer
Exemplo de saída:
Greeting: Hello, C Programming!
Vamos analisar o código:
char *greetingdeclara um ponteiro para um caractere (string)"Hello, C Programming!"é um literal de string armazenado na memória- O ponteiro
greetingaponta para o primeiro caractere da string printf()usa o especificador de formato%spara imprimir a string inteira
Você também pode modificar o ponteiro para apontar para diferentes partes da string:
#include <stdio.h>
int main() {
char *greeting = "Hello, C Programming!";
// Aponta para uma parte específica da string
char *partial = greeting + 7;
printf("Original string: %s\n", greeting);
printf("Partial string: %s\n", partial);
return 0;
}
Exemplo de saída:
Original string: Hello, C Programming!
Partial string: C Programming!
Definir Strings Usando Notação de Array Local
Neste passo, você aprenderá como definir strings usando notação de array local em C. Este método oferece outra maneira de criar e inicializar strings com controle mais direto sobre o array de caracteres.
Vamos criar um novo arquivo para demonstrar a definição de string usando notação de array local:
cd ~/project
touch string_array.c
Insira o seguinte código:
#include <stdio.h>
int main() {
// Define a string usando notação de array local
char greeting[30] = "Hello, C Programming!";
// Imprime a string
printf("Greeting: %s\n", greeting);
return 0;
}
Compile e execute o programa:
gcc string_array.c -o string_array
./string_array
Exemplo de saída:
Greeting: Hello, C Programming!
Vamos explorar algumas variações da notação de array local:
#include <stdio.h>
int main() {
// Define um array com inicialização explícita
char name[10] = {'J', 'o', 'h', 'n', '\0'};
// Define um array com inicialização parcial
char city[20] = "New York";
// Define um array sem especificar o tamanho
char message[] = "Welcome to C Programming!";
printf("Name: %s\n", name);
printf("City: %s\n", city);
printf("Message: %s\n", message);
return 0;
}
Exemplo de saída:
Name: John
City: New York
Message: Welcome to C Programming!
Pontos-chave sobre a notação de array local:
- Você pode especificar o tamanho do array explicitamente
- O
'\0'(terminador nulo) é crucial para marcar o fim da string - Arrays podem ser inicializados com caracteres individuais ou como literais de string
- Quando não totalmente inicializados, os elementos restantes são definidos como zero
Formatar Strings com printf
Neste passo, você aprenderá como usar printf() para formatar strings e vários tipos de dados em C. A função printf() oferece recursos poderosos de formatação de strings.
Vamos criar um novo arquivo para demonstrar a formatação de strings:
cd ~/project
touch string_formatting.c
Insira o seguinte código para explorar diferentes opções de formatação:
#include <stdio.h>
int main() {
// Formatação básica de string
char name[] = "Alice";
int age = 30;
float height = 5.8;
// Saída simples de string
printf("Name: %s\n", name);
// Formatação com múltiplas variáveis
printf("Profile: %s is %d years old\n", name, age);
// Formatação com precisão de ponto flutuante
printf("Height: %.1f meters\n", height);
// Largura e alinhamento
printf("Name (right-aligned): %10s\n", name);
printf("Name (left-aligned): %-10s\n", name);
// Misturando diferentes especificadores de formato
printf("Details: %s, %d years, %.1f meters\n", name, age, height);
return 0;
}
Compile e execute o programa:
gcc string_formatting.c -o string_formatting
./string_formatting
Exemplo de saída:
Name: Alice
Profile: Alice is 30 years old
Height: 5.8 meters
Name (right-aligned): Alice
Name (left-aligned): Alice
Details: Alice, 30 years, 5.8 meters
Especificadores de formato comuns:
%s: Strings%d: Inteiros%f: Números de ponto flutuante%.1f: Ponto flutuante com 1 casa decimal%10s: Alinhado à direita com largura de 10 caracteres%-10s: Alinhado à esquerda com largura de 10 caracteres
Vamos explorar formatações mais avançadas:
#include <stdio.h>
int main() {
// Representações hexadecimal e octal
int number = 255;
printf("Decimal: %d\n", number);
printf("Hexadecimal: %x\n", number);
printf("Octal: %o\n", number);
// Preenchimento com zeros
printf("Padded number: %05d\n", 42);
return 0;
}
Exemplo de saída:
Decimal: 255
Hexadecimal: ff
Octal: 377
Padded number: 00042
Determinar o Comprimento da String com strlen
Neste passo, você aprenderá como usar a função strlen() para determinar o comprimento de strings em C. A função strlen() faz parte da biblioteca <string.h> e fornece uma maneira fácil de contar os caracteres em uma string.
Vamos criar um novo arquivo para demonstrar o cálculo do comprimento da string:
cd ~/project
touch string_length.c
Insira o seguinte código para explorar strlen():
#include <stdio.h>
#include <string.h>
int main() {
// Define strings de diferentes comprimentos
char greeting[] = "Hello, World!";
char name[] = "Alice";
char empty[] = "";
// Calcula e imprime os comprimentos das strings
printf("Greeting: %s\n", greeting);
printf("Greeting length: %lu characters\n", strlen(greeting));
printf("Name: %s\n", name);
printf("Name length: %lu characters\n", strlen(name));
printf("Empty string length: %lu characters\n", strlen(empty));
return 0;
}
Compile e execute o programa:
gcc string_length.c -o string_length
./string_length
Exemplo de saída:
Greeting: Hello, World!
Greeting length: 13 characters
Name: Alice
Name length: 5 characters
Empty string length: 0 characters
Vamos explorar um exemplo mais prático de uso de strlen():
#include <stdio.h>
#include <string.h>
int main() {
char input[100];
printf("Enter a string: ");
fgets(input, sizeof(input), stdin);
// Remove o caractere de nova linha se presente
input[strcspn(input, "\n")] = 0;
// Calcula e imprime o comprimento da string
size_t length = strlen(input);
printf("You entered: %s\n", input);
printf("String length: %lu characters\n", length);
// Demonstra operações baseadas no comprimento
if (length > 10) {
printf("This is a long string!\n");
} else if (length > 0) {
printf("This is a short string.\n");
} else {
printf("You entered an empty string.\n");
}
return 0;
}
Pontos-chave sobre strlen():
- Retorna o número de caracteres antes do terminador nulo
- Não conta o terminador nulo
- Funciona com arrays de caracteres e literais de string
- Parte da biblioteca
<string.h>, então inclua este cabeçalho - Retorna o tipo
size_t(unsigned long)
Comparar Strings com strncmp
Neste passo, você aprenderá como usar a função strncmp() para comparar strings em C. A função strncmp() permite comparar um número especificado de caracteres entre duas strings.
Vamos criar um novo arquivo para demonstrar a comparação de strings:
cd ~/project
touch string_compare.c
Insira o seguinte código para explorar strncmp():
#include <stdio.h>
#include <string.h>
int main() {
// Define strings para comparação
char str1[] = "Hello, World!";
char str2[] = "Hello, Everyone!";
char str3[] = "Hello, World!";
// Compara strings inteiras
printf("Full string comparison:\n");
int result1 = strncmp(str1, str2, strlen(str1));
int result2 = strncmp(str1, str3, strlen(str1));
printf("str1 vs str2: %d\n", result1);
printf("str1 vs str3: %d\n", result2);
// Compara os primeiros poucos caracteres
printf("\nPartial string comparison:\n");
int result3 = strncmp(str1, str2, 7);
printf("First 7 characters of str1 vs str2: %d\n", result3);
return 0;
}
Compile e execute o programa:
gcc string_compare.c -o string_compare
./string_compare
Exemplo de saída:
Full string comparison:
str1 vs str2: -1
str1 vs str3: 0
Partial string comparison:
First 7 characters of str1 vs str2: 0
Vamos criar um exemplo mais prático de comparação de strings:
#include <stdio.h>
#include <string.h>
int main() {
// Exemplo de verificação de senha
char stored_password[] = "SecretPass123";
char input_password[20];
printf("Enter password: ");
scanf("%19s", input_password);
// Compara os primeiros 10 caracteres da senha
int comparison = strncmp(stored_password, input_password, 10);
if (comparison == 0) {
printf("Access granted!\n");
} else {
printf("Access denied!\n");
}
return 0;
}
Pontos-chave sobre strncmp():
- Compara até um número especificado de caracteres
- Retorna 0 se as strings corresponderem para o comprimento especificado
- Retorna um valor negativo se a primeira string for lexicograficamente menor
- Retorna um valor positivo se a primeira string for lexicograficamente maior
- Parte da biblioteca
<string.h> - Útil para comparações parciais de strings
Entendendo os valores de retorno de strncmp():
- 0: Strings são iguais para o comprimento especificado
- < 0: A primeira string vem antes da segunda string
0: A primeira string vem depois da segunda string
Resumo
Neste laboratório, você aprendeu como definir strings usando tanto a notação de ponteiro quanto a notação de array local em programação C. Com a notação de ponteiro, você pode criar e manipular strings de forma flexível usando um ponteiro de caractere. Com a notação de array local, você tem mais controle direto sobre o array de caracteres. Você também aprendeu como formatar strings com printf(), determinar o comprimento da string com strlen(), e comparar strings com strncmp(). Essas técnicas de manipulação de strings são habilidades fundamentais para trabalhar com dados de texto em C.



