Linguagem de Programação C. Strings

Documentos relacionados
Programação de Computadores II. Cap. 7 Cadeias de Caracteres 1/2

Cadeias de Caracteres (Strings)

Caracteres e Cadeias de Caracteres

Introdução à Programação. Strings

Programação de Computadores I Funções Básicas da Linguagem C PROFESSORA CINTIA CAETANO

Programação de Computadores II. Cap. 7 Cadeias de Caracteres

cadeia de caracteres (string) INF Programação I Prof. Roberto Azevedo

Computação 2. Aula 3. Diego Addan Vetores de caracteres (strings)

Linguagem de Programação C. Expressões em C

Seqüências de Caracteres

Leitura Segura de Strings

3.1 - Funções para manipular dados de entrada e saída padrão

Módulo 7 Cadeias de Caracteres

Computação Eletrônica. Strings. Prof: Luciano Barbosa. CIn.ufpe.br

Aula 9 Oficina de Programação Strings. Profa. Elaine Faria UFU

Linguagem de Programação C. Arquivos

Programação de Computadores I

Tratamento de Caracteres

Algoritmos e Lógica de Programação 80 horas // 4 h/semana. Para começar... Strings. Para começar... Strings. Exemplo...

Linguagem de Programação

Linguagem de Programação

Caracteres. Caracteres são representados através de códigos numéricos. Tabela de códigos: Define correspondência entre caracteres e códigos numéricos

Algoritmos e Programação

1/27. Registos (Estruturas - struct)

Escreva a função e_caracter que verifica se um determinado caracter é um numero ou não. Escreva um Programa de teste da função.

Apêndice B. Cadeias de Caracteres (Strings)

MC-102 Aula 11 Strings

Introdução à Programação Aula 10. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação

CURSO SUPERIOR DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS DISCIPLINA : INTRODUÇÃO À LÓGICA DE PROGRAMAÇÃO ASSUNTO: C

Índice Valor C A D E I A \0 memória

Departamento de Sistemas de Computação Universidade de São Paulo Introdução a Ciência de Computação I. Aula 13 Arquivos

CCO 016 / COM 110 Fundamentos de Programação

Estruturas de Dados Aula 6: Cadeias de 28/03/2010

Estruturas de Dados Aula 6: Cadeias de Caracteres

Programação de Computadores II

Linguagem C: Arquivo-Texto

Programação de Computadores II Aula 03. Linguagem C I

Aula 05 -Introdução àlinguagc Programação: Estr. Dados Strings

Char e Strings de Caracteres

Aula 3 Constantes e funções de E/S

Linguagem de Programação C. Registros

LÓGICA DE PROGRAMAÇÃO. Resumo da Linguagem C. Sérgio Carlos Portari Júnior

Disciplina de Introdução à Ciência da Computação ICC 1 - Teoria

Programação: Entrada e Saída de Dados

Programação Estruturada

CAP. IX - MANIPULAÇÃO DE ARQUIVOS Generalidades sobre Arquivos. 9.2 Abertura e Fechamento de Arquivos. Operações com arquivos:

Linguagem C. André Tavares da Silva.

CCO 016 Fundamentos de Programação

USP - ICMC - SSC SSC o. Semestre Disciplina de Introdução à Ciência da Computação ICC 1 - Teoria

Variáveis, Tipos de Dados e Operadores

Leitura de Arquivos. Prof. Fabrício Olivetti de França

Tipos Básicos. Operadores de Incremento e Decremento. Operador Sizeof. Estruturas de Dados Aula 2: Estruturas Estáticas

Estruturas de Dados Aula 2: Estruturas Estáticas. Tipos Básicos. Quantos valores distintos podemos representar com o tipo char?

Sistemas Operacionais e Introdução à Programação. Programação com linguagem C

Estruturas de Dados Aula 2: Estruturas Estáticas 02/03/2011

Introdução a Programação. Strings (Vetor de Caracteres)

Vetores II. Strings Leitura e exibição Biblioteca string.h Operações com Strings. Matrizes Definição de Acesso Operações com Matrizes

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

Computação 2. Aula 8. Profª. Fabiany Arquivos

LINGUAGEM C: ARRAYS DE CARACTERES: STRINGS

Introdução à Programação

Computação Eletrônica. Aula 12 Arquivos Texto e Binário. Prof: Luciano Barbosa. CIn.ufpe.br

Linguagem de Programação C. Funções e Procedimentos

Estruturas Compostas Matriz

prim = A ; prim = &A[0];

Arquivos. Programação de Computadores I. Natália Batista.

Linguagem C Introdução à programação em C

Métodos Computacionais. Operadores, Expressões Aritméticas e Entrada/Saída de Dados

Métodos Computacionais. Strings (Vetor de Caracteres)

10. - ESTRUTURAS Características Básicas

USP - ICMC - SSC SSC o. Semestre Disciplina de Introdução à Ciência da Computação ICC 1 - Teoria

SSC304 Introdução à Programação Para Engenharias. Arquivos. GE4 Bio

ECT1203 Linguagem de Programação

Linguagem C - Introdu ção

Strings. Adaptado de Deise Saccol

Estruturas de Dados. Profa. Juliana Pinheiro Campos

USP - ICMC - SSC SSC o. Semestre Disciplina de Introdução à Computação para Engenharia Ambiental

Laboratório de Programação II

Linguagem de Programação C. Vetores

Estrutura de Dados. Cadeia de Caracteres. Roberto Araujo Ago/2013

Disciplina de Algoritmos e Programação

LINGUAGEM DE PROGRAMAÇÃO C AULA 2. Professor: Rodrigo Rocha

Programação: Vetores

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

Algoritmos e Estruturas de Dados I (DCC/003) Variável Indexada Vetor

USP-ICMC-BInfo. Vetores em C. SCC501 - ICC-II 2011 Prof. João Luís

INSTITUTO FEDERAL DE! EDUCAÇÃO, CIÊNCIA E TECNOLOGIA RIO GRANDE DO NORTE

Linguagem C. IF61A/IF71A - Computação 1 Prof. Leonelo Almeida. Universidade Tecnológica Federal do Paraná

C/C++; biblioteca stdio

USP - ICMC - SSC SSC o. Semestre 2010 Disciplina de Introdução à Ciência da Computação ICC 1 - Teoria

Strings. Introdução. Definição de strings. Criação/Declaração de strings. Inicialização de strings. Manipulação de strings. Exemplos.

Vetores e Matrizes. Prof. Fabrício Olivetti de França Charles Henrique

Funções de Entrada e Saída

USP - ICMC - SSC SSC o. Semestre Disciplina de Linguagem de Programação e Aplicações [ Eng. Elétrica / Automação ]

Disciplina de Linguagem de Programação e Aplicações [ Eng. Elétrica / Automação ]

SCC-211 Lab. Algoritmos Avançados

Métodos Computacionais em Física

Programação I A Linguagem C. Prof. Carlos Alberto

Transcrição:

Strings Cristiano Lehrer

Introdução Uma string é um conjunto de caracteres armazenados num vetor: Como em C uma string não é um tipo básico, a única forma de representar um conjunto de caracteres é recorrendo a um vetor de caracteres. Uma string é apenas um vetor de caracteres: O inverso é falso, ou seja, um vetor de caracteres pode não ser uma string.

Exemplos de String String "Zé" Z é \0 v[0] v[1] v[2] v[3] v[4] v[5] String "Luiz" L u i z \0 v[0] v[1] v[2] v[3] v[4] v[5] String "" (string vazia) \0 v[0] v[1] v[2] v[3] v[4] v[5]

Delimitador de String O caractere ASCII selecionado como delimitador de uma string é o caractere cujo código ASCII é igual a ZERO, isto é, o caractere número zero e que se representa por '\0': O caractere '\0' não possui nenhuma representação gráfica. O caractere '\0' cujo código ASCII é 0 nada tem a ver com o caractere '0', um outro caractere totalmente diferente (código ASCII 48). O caractere '\0' deverá ser sempre o último caractere de uma string.

Carga Inicial Automática de Strings char nome[20] = "Fulano"; F u l a n o \0 nome[0] nome[1] nome[2] nome[3] nome[4] nome[5] nome[6] nome[19] char nome[20] = {'F', 'u', 'l', 'a', 'n', 'o'}; F u l a n o \0 nome[0] nome[1] nome[2] nome[3] nome[4] nome[5] nome[6] nome[19] char nome[] = "Fulano"; F u l a n o \0 nome[0] nome[1] nome[2] nome[3] nome[4] nome[5] nome[6] char *nome = "Fulano"; F u l a n o \0 nome[0] nome[1] nome[2] nome[3] nome[4] nome[5] nome[6]

Vetores de Caracteres versus String Vetor de caracteres: char vogais[] = {'a', 'e', 'i', 'o', 'u'}; String: a e i o u vogais[0] vogais[1] vogais[2] vogais[3] vogais[4] char vogais[6] = {'a', 'e', 'i', 'o', 'u'}; a e i o u \0 vogais[0] vogais[1] vogais[2] vogais[3] vogais[4] vogais[5] char vogais[] = "aeiou"; a e i o u \0 vogais[0] vogais[1] vogais[2] vogais[3] vogais[4] vogais[5]

Função printf Pode receber uma constante: printf("hello World"); Pode receber uma variável: char nomeproprio[100] = "Fulano"; char sobrenome[100] = "Silva"; printf("nome: %s, %s\n", sobrenome, nomeproprio); O formato %s indica para o método que se trata de uma string.

Função puts Permite unicamente a escrita de strings, sejam constantes ou armazenadas em variáveis: A única diferença entre o método printf, é que o método puts coloca automaticamente uma quebra de linha no final da string: São instruções equivalentes: puts("hello World"); printf("hello World\n");

Função scanf Permite a leitura de strings utilizando o formato %s: A variável que receberá a string não deverá ser precedido de um &. A função realiza apenas a leitura de uma única palavra. Lê todos os caracteres até encontrar um <ESPAÇO>, <TAB> ou <ENTER> char nome[50]; printf("forneça o seu nome: "); scanf("%s", nome); printf("seu nome é %s\n", nome);

Função gets Permite colocar, na variável que recebe por parâmetro, todos os caracteres introduzidos pelo usuário: char nome[50]; printf("forneça o seu nome: "); gets(nome); printf("seu nome é %s\n", nome);

Função fgets Permite colocar, na variável que recebe por parâmetro, todos os caracteres introduzidos pelo usuário, até o limite especificado pelo programador: char nome[50]; printf("forneça o seu nome: "); fgets(nome, 50, stdin); printf("seu nome é %s\n", nome); Deveria ser a função base para a leitura de strings em todos os programas escritos em C!

Passagem de Strings para Funções (1/2) A passagem de strings para funções é exatamente igual à passagem de vetores para funções, uma vez que qualquer string é sempre um vetor de caracteres. /* string length */ int strlen2(char s[], int max) { int i = 0; } while((s[i]!= '\0') && (i < max)) { i = i + 1; } int main() { return i; char palavra[100] = "Fulano"; int tam = strlen2(palavra, 100); printf("\"fulano\" possui %d caracteres.\n", tam); } return 0;

Passagem de Strings para Funções (2/2) No caso de string, não é necessário passar o tamanho do array, pois o mesmo é obtido através do caractere '\0'. /* string length */ int strlen2(char s[]) { int i = 0; } while(s[i]!= '\0') { i = i + 1; } return i; int main() { char palavra[100] = "Fulano"; int tam = strlen2(palavra); printf("\"fulano\" possui %d caracteres.\n", tam); } return 0;

Questões de Segurança (1/3) Inimigo público nº 1: estouro de buffer: Práticas ruins de codificação. O fato do C dar aos programadores muitas maneiras de atirar no próprio pé. Falta de funções de tratamento de strings seguros e fáceis de usar. Falta de validação dos limites de um array. Ignorância sobre as consequências reais dos erros.

Questões de Segurança (2/3) O Microsoft Security Response Center estima o custo da emissão de um boletim de segurança e o patch associado em US$ 100.000,00 e isso é só o começo: Horas dos profissionais que irão aplicar os patch. Horas dos profissionais que irão identificar os computadores sem o patch instalado. O risco de estar vulnerável até a aplicação do patch.

Questões de Segurança (3/3) Um estouro de buffer é explorável, ou seja, usuários experientes podem utilizar o estouro de buffer para alterar o comportamento do programa, fazendo com que o mesmo realize as funções por eles designadas, ao invés das originalmente projetadas: Vírus de computador. Cavalos de tróia. Por isso: SEMPRE UTILIZE FUNÇÕES SEGURAS No caso de strings, funções que recebam junto o tamanho máximo permitido para a operação.