Está en la página 1de 31

Resumo linguagem C

// - comentários

// Este é um comentário em C

Ou

/* este também é um comentário em C */

Tipos de dados em C

Tipo Espaço Escala


Char 1 byte -128 a +127
Int 2 bytes -32768 a +32767
Float 4 bytes 3.4e-38 a 3.4e+38
Double 8 bytes 1.7e-308 a 1.7e+308
Void Nenhum nenhuma
Obs.: utilizando-se a clausula unsigned antes de declarar o tipo de variável ,
dobramos o valor desta,pois declaramos que só serão aceitos valores positivos
para a variável.

Unsigned int tem a a escala de 0 a 255,por exemplo.

Como declarar:

#include<stdio.h>

#include<string.h>

int valor ;

char tecla ;

char tecla[50] // Aqui temos uma variável do tipo string,utilizando-se a biblioteca


string.h

int main()

Bloco de comandos

}
Saida formatada de dados

printf(“\n \a \t Teste “) ;

\a Soa alarme no computador


\b O cursor retrocede uma coluna
\f Alimenta página na impressora
\n O cursor avança uma nova linha
\r O cursor retrocede para a primeira
coluna da linha
\t O cursor avança para a próxima marca
da tabulação
\” Exibe uma única aspa
\’ Exibe um único apostrofo
\\ Exibe uma barra invertida

Entrada formatada de dados

scanf(“%d”,&nome_da_variavel) ;

gets(nome_da_variavel) ; // usado no tipo string com sua respectiva biblioteca


<string.h>

%c Um único caracter
%o , %d , %x Um numero octal,um numero
decimal ,um numero hexadecimal
%u Um numero inteiro em base decimal
sem sinal
%ld Um numero inteiro longo em base
decimal
%f , %lf Um numero real de precisão simples
ou dupla
%s Uma cadeia de caracteres
%% Um único sinal de porcentagem

Para utilizarmos o tipo char podemos atribuir o valor à variável utilizando-se as


funções :

#include<conio.h> //Biblioteca de comandos que abriga a função getche()

nome_variavel = getche() ; //mostra a tecla pressionada na tela

nome_variavel = getch() ; //não mostra a tecla pressionada na tela

nome_variavel = getchar() ;//mostra a sequencia digitada,porem só aceita o


primeiro caracter,depois de pressionada a tecla <enter>
Operadores matemáticos

Variável++ ou variavel-- Incrementa ou decrementa 1 ao valor


da variável , pós incremento,ou seja o
valor será atualizado na variável na
próxima passada do laço (loop)

++variável ou –variavel Incrementa ou decrementa 1 ao valor


da variável,pré incremento,ou seja o
valor da variável será imediatamente
atualizado

+ Operador de adição

Y=x+z ;

- Operador de subtracao

Y=x-z ;

* Operador de multiplicação

Y=x*z ;

/ Operador de divisão inteira

Y=x/z ;

% Resto da divisão de dois números


inteiros

Y=x%z ;

Algumas convenções utilizadas em C:

i+=2 é o mesmo que i = i+2 ;

x*=y+1 é o mesmo que x = x*(y+1) ;

t/ = 2.5 ; é o mesmo que t=t/25 ;

p%=5; é o mesmo que p=p%5 ;


Operadores relacionais

X==y Verdade se x for igual a y

X!=y Verdade se x for diferente de y

X<y Verdade se x for menor que y

x>y Verdade se x for maior que y

X<=y Verdade se x for menor ou igual a y

x>=y Verdade se x for maior ou igual a y

!x Verdade se e só se x for falso

Operador not

X&&y Verdade se e só se x e y forem


verdade

Operador AND

X || y Verdade se e só se x ou y for verdade

Operador OR

Obs.:em C não existe o tipo booleano , porem o C interpreta os valores lógicos


da seguinte forma:0 é falso , qualquer outro valor que não seja 0 será
interpretado como verdadeiro.

Comandos de decisão

if (variável_a == valor)

bloco de comandos

else

bloco de comandos

};
while ((a<=10) || (b<=10))

bloco de comandos

do

bloco de comandos

while(condição) ;

Laço

for (variável=valor;condição;variável++)

for (variável=0;variável<=10;variável--)

bloco de comandos

}
TRABALHANDO COM VETORES DO TIPO STRING

#include<stdio.h>

#include<conio.c>

#include<conio.h>

int main()

char nome[40][10] ;

char tecla ;

int indice ;

tecla='s' ;

indice=0 ;

while(tecla!='n' && indice<=5)

clrscr() ;

printf("\n Forneca o nome do indice %d:",indice) ;

gets(nome[indice]) ;

printf("\n Deseja continuar (s)im ou (n)ao:") ;

tecla=getche() ;

printf("\n") ;

indice++;

clrscr() ;

for (indice=0;indice<=5;indice++)

printf("\n%s",nome[indice]) ;

if(strcmp(nome[indice],"alexandre")==0)
{

printf("\nFoi digitado alexandre!") ;

getche() ;

}
Operador condicional (?)

condição ? expressao1 : expressao2 ;

Funciona da seguinte forma:

1-avalia a condição

2-se for verdadeira,o resultado final é o valor da expressão1

3-se for falsa , o resultado final é o valor da expressão2

variavel_a>variavel_b ? (resultado=variavel_a) : (resultado=variavel_b) ;

se a for maior que b , resultado=variável_a senão resultado=variável_b ;

Uso de switch case

#include<stdio.h>

#include<conio.h>

//Uso de decisões multiplas com o comando switch

int main()

char tecla_pressionada ;

do

printf ("\n Pressione uma tecla entre a e d:") ;

tecla_pressionada=getche() ;

switch(tecla_pressionada)

case 'a' : {

printf("\n Pressionou A!") ;

printf("\n Pressionou A mesmo !") ;

break ;

case 'b' : printf("\n Pressionou B!") ; break ;


case 'c' : printf("\n Pressionou C!") ; break ;

default : printf("\n Nao pressionou nenhuuma das opcoes") ; break ;

while(tecla_pressionada != 's') ;

printf("\n Abortagem de programa executada conforme solicitacao...") ;

printf("\n Pressione qualquer tecla para terminar!") ;

getche() ;

}
Criação de novos tipos em C (Comando Struct)

//Criação do novo tipo de variavel


struct tcadastro
{
char nome[50] ;
int escolaridade ;
char sexo ;
};

//Declaração de vetor com o novo tipo de variavel


struct tcadastro cadastro[300] ;

cadastro[indice].nome ;

cadastro[índice].escolaridade;

cadastro[índice].sexo;

OBSERVAÇÃO QUANTO AO ESCOPO DAS VARIAVEIS E SUAS RESPECTIVAS


DECLARAÇÕES

CLASSE PALAVRA ESCOPO DURAÇÃO EXEMPLO

LOCAL AUTO FUNÇÃO FUNÇÃO AUTO INT


N;

GLOBAL EXTERN PROGRAMA PROGRAMA EXTERN INT


N;

STATICA STATIC FUNÇÃO PROGRAMA STATIC INT


N;

UMA VARIAVEL ESTATICA TEM O ESCOPO DE UMA LOCAL E A DURAÇÃO DE UMA


GLOBAL.ISSO QUER DIZER QUE ESSAS VARIAVEIS SÓ SÃO ACESSIVEIS À FUNÇÃO
QUE AS DECLARA,MAS EXISTEM DURANTE TODA A EXECUÇÃO DO
PROGRAMA.VARIAVEIS ESTATICAS TEM A VANTAGEM DE SEREM PRIVATIVAS E
,AO MESMO TEMPO,DE MANTEREM SEU VALOR ENTRE UMA CHAMADA E OUTRA
DA FUNÇÃO.A PALAVRA STATIC DEVE PREFIXAR A DECLARAÇÃO DE VARIAVEIS
ESTATICAS.
VETORES EM C

//Vetores do tipo inteiro com indices pré inicializados

#include<stdio.h>

#include<conio.c>

#include<conio.h>

int main()

static int indice ;

static int vetor[6] = {0,10,20,30,40,50} ;

for (indice=1;indice<=5;indice++)

printf("\n %d-",vetor[indice]) ;

getche() ;

}
Matrizes

• Matrizes bidimensionais
• Matrizes de strings
• Matrizes multidimensionais
• Inicialização
• Inicialização sem especificação de tamanho

Matrizes bidimensionais

Já vimos como declarar matrizes unidimensionais (vetores). Vamos tratar agora de matrizes
bidimensionais. A forma geral da declaração de uma matriz bidimensional é muito parecida
com a declaração de um vetor:

tipo_da_variável nome_da_variável [altura][largura];

é muito importante ressaltar que, nesta estrutura, o índice da esquerda indexa as linhas e o da
direita indexa as colunas. Quando vamos preencher ou ler uma matriz no C o índice mais à
direita varia mais rapidamente que o índice à esquerda. Mais uma vez é bom lembrar que, na
linguagem C, os índices variam de zero ao valor declarado, menos um; mas o C não vai
verificar isto para o usuário. Manter os índices na faixa permitida é tarefa do programador.
Abaixo damos um exemplo do uso de uma matriz:

#include <stdio.h>
int main ()
{
int mtrx [20][10];
int i,j,count;
count=1;
for (i=0;i<20;i++)
for (j=0;j<10;j++)
{
mtrx[i][j]=count;
count++;
printf("\nLinha:%d Col:%d INT:%d",i,j,mtrx[i][j]);
}
return(0);
}

No exemplo acima, a matriz mtrx é preenchida, sequencialmente por linhas, com os números
de 1 a 200. Você deve entender o funcionamento do programa acima antes de prosseguir.

Matrizes de strings

Matrizes de strings são matrizes bidimensionais. Imagine uma string. Ela é um vetor. Se
fizermos um vetor de strings estaremos fazendo uma lista de vetores. Esta estrutura é uma
matriz bidimensional de chars. Podemos ver a forma geral de uma matriz de strings como
sendo:

char nome_da_variável [num_de_strings][compr_das_strings];

Aí surge a pergunta: como acessar uma string individual? Fácil. é só usar apenas o primeiro
índice. Então, para acessar uma determinada string faça:

nome_da_variável [índice]

Aqui está um exemplo de um programa que lê 5 strings e as exibe na tela:

#include <stdio.h>
int main ()
{
char strings [5][100];
int count;
for (count=0;count<5;count++)
{
printf ("\n\nDigite uma string: ");
gets (strings[count]);
}
printf ("\n\n\nAs strings que voce digitou foram:\n\n");
for (count=0;count<5;count++)
printf ("%s\n",strings[count]);
return(0);
}

Matrizes multidimensionais

O uso de matrizes multidimensionais na linguagem C é simples. Sua forma geral é:

tipo_da_variável nome_da_variável [tam1][tam2] ... [tamN];

Uma matriz N-dimensional funciona basicamente como outros tipos de matrizes. Basta
lembrar que o índice que varia mais rapidamente é o índice mais à direita.

Inicialização

Podemos inicializar matrizes, assim como podemos inicializar variáveis. A forma geral de
uma matriz como inicialização é:

tipo_da_variável nome_da_variável [tam1][tam2] ... [tamN] = {lista_de_valores};

A lista de valores é composta por valores (do mesmo tipo da variável) separados por vírgula.
Os valores devem ser dados na ordem em que serão colocados na matriz. Abaixo vemos
alguns exemplos de inicializações de matrizes:
float vect [6] = { 1.3, 4.5, 2.7, 4.1, 0.0, 100.1 };
int matrx [3][4] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 };
char str [10] = { 'J', 'o', 'a', 'o', '\0' };
char str [10] = "Joao";
char str_vect [3][10] = { "Joao", "Maria", "Jose" };

O primeiro demonstra inicialização de vetores. O segundo exemplo demonstra a inicialização


de matrizes multidimensionais, onde matrx está sendo inicializada com 1, 2, 3 e 4 em sua
primeira linha, 5, 6, 7 e 8 na segunda linha e 9, 10, 11 e 12 na última linha. No terceiro
exemplo vemos como inicializar uma string e, no quarto exemplo, um modo mais compacto
de inicializar uma string. O quinto exemplo combina as duas técnicas para inicializar um
vetor de strings. Repare que devemos incluir o ; no final da inicialização.

Inicialização sem especificação de tamanho

Podemos, em alguns casos, inicializar matrizes das quais não sabemos o tamanho a priori. O
compilador C vai, neste caso verificar o tamanho do que você declarou e considerar como
sendo o tamanho da matriz. Isto ocorre na hora da compilação e não poderá mais ser mudado
durante o programa, sendo muito útil, por exemplo, quando vamos inicializar uma string e
não queremos contar quantos caracteres serão necessários. Alguns exemplos:

char mess [] = "Linguagem C: flexibilidade e poder.";


int matrx [][2] = { 1,2,2,4,3,6,4,8,5,10 };

No primeiro exemplo, a string mess terá tamanho 36. Repare que o artifício para realizar a
inicialização sem especificação de tamanho é não especificar o tamanho! No segundo
exemplo o valor não especificado será 5.
Funções úteis

função kbhit retorna 0 se o usuário não está precionando nenhuma tecla. Caso
contrário, retorna um valor diferente de 0.

Exemplo:

code:

#include <stdio.h>
#include <conio.h>

void main(void)
{
printf("Aguardando tecla...%c", '\n');
while (kbhit()==0)
{
}
printf("Tecla precionada! Até logo!%c", '\n');
return;
}

toupper() ; - transforma a variável em maiúsculo

#include<ctype.h>

Resposta=toupper(getch()) ;

tolower();-transforma o character em minuscule

Resposta=tolower(getch()) ;

clrscr();

limpa a tela

gotoxy(coluna,linha) ; // <conio.h>

posiciona o cursor na tela ;

rand() % valor ;
rand() % 26 ; - gera um valor randômico entre 0 e 26 , utilize <stdlib.h>

textcolor(cor) ; //<conio.h>

utilize cprintf(“texto”) ;

textbackground(cor);//para cor de fundo

The following table lists the allowable colors (as symbolic constants) and their numeric values:

BLACK 0

BLUE 1

GREEN 2

CYAN 3

RED 4

MAGENTA 5

BROWN 6

LIGHTGRAY 7

DARKGRAY 8

LIGHTBLUE 9

LIGHTGREEN 10

LIGHTCYAN 11

LIGHTRED 12

LIGHTMAGENTA 13

YELLOW 14

WHITE 15

BLINK 128

You can make the characters blink by adding 128 to the foreground color. The predefined constant BLINK
exists for this purpose. For example: textcolor(CYAN + BLINK);

codigo ascii - █ deste quadrado ao lado – 219

utilize para formar as bordas da tela ou algo parecido

printf(“%c”,219) ;

Para apresentação de números decimais de forma formatada :

printf("\nValor A - Valor B=%.2f",subtracao(valor_a,valor_b)) ;


onde %.2f – o 2 significa quantas casas decimais após a virgula serão mostradas

As funções gets() e puts()

Usando gets() é possível inserir caracteres pelo teclado até que o Enter seja pressionado.
No final da string é colocado um terminador nulo e então a função retorna.

A função puts() pode receber os códigos de barra invertida apresentados na tabela 2 neste
artigo e é considerada muito mais rápida do que o printf(). O único problema é que puts() trabalha
apenas com string de caracteres enquanto que o printf() trabalha com todos os tipos de dados.
Matrizes bidimensionais

int matriz[5][5] ;

int linha,coluna ;

for (linha=0;linha<=5;linha++)

for(coluna=0;coluna<=5;coluna++)

gotoxy(1,coluna+1) ;

textcolor(randomico()) ;

textbackground(randomico()) ;

cprintf("\n\rForneca o valor da linha %d,coluna %d:",linha,coluna) ;

scanf("%d",&matriz[linha][coluna]) ;
6. strings
6.1 Determinando o tamanho de uma string

Para determinar o tamanho de uma string use a função strlen( ). Esta função faz parte do
arquivo de cabeçalho string.h. Sua sintaxe é:

strlen(string)

Exemplo:

/* Determinando o tamanho de uma string usando


* a função strlen() */

#include <stdio.h>
#include <string.h>

int main()
{
char string[20];

printf("\n");
printf("Determinando o tamanho de uma string\n");
printf("------------------------------------\n");
printf("\n");
printf("Digite a string :");
scanf("%s",&string);
printf("\n");
printf("A string tem %d carateres.\n\n",strlen(string));
return(0);
}

6.2 Copiando uma string em outra

Para copiar uma string em outra use a função strcpy( ). Esta função faz parte do arquivo de
cabeçalho string.h. Sua sintaxe é:

strcpy(destino, origem)

Exemplo:

/* Copiando uma string em outra usando a


* função strcpy() */

#include <stdio.h>
#include <string.h>

int main()
{
char string1[10], string2[10];

printf("\n");
printf("Copiando uma string em outra\n");
printf("----------------------------\n");
printf("\n");
printf("Digite string1 :");
scanf("%s",&string1);
printf("\n");
printf("string1 = %s\n",string1);
printf("string2 = %s\n",strcpy(string2,string1));
return(0);
}
Na prática, todo conteúdo de string2 é substituído por string1.

6.3 Unindo duas strings

Para unir duas strings use a função strcat( ). Esta função faz parte do arquivo de cabeçalho
string.h. Sua sintaxe é:

strcat(destino, origem)

Exemplo:

/* Unindo duas strings usando a


* função strcat() */

#include <stdio.h>
#include <string.h>

int main()
{
char string1[100], string2[10];

printf("\n");
printf("Unindo duas strings\n");
printf("-------------------\n");
printf("\n");
printf("Digite string1 :");
scanf("%s",&string1);
printf("\n");
printf("Digite string2 :");
scanf("%s",&string2);
printf("\n");
printf("Unindo string1 a string2 : %s\n\n",strcat(string2,string1));
return(0);
}

6.4 Anexando caracteres de uma string em outra

Para anexar caracteres de uma string em outra use a função strncat( ). Esta função faz parte
do arquivo de cabeçalho string.h. Sua sintaxe é :

strncat(destino, origem, nr_caracteres)

Exemplo:

/* Anexando caracteres de uma string


* em outra usando a função strncat()*/
#include <stdio.h>
#include <string.h>

int main()
{
char string1[20],string2[6]="aeiou";

printf("\n");
printf("Anexando caracteres de uma string em outra\n");
printf("------------------------------------------\n");
printf("Entre com string1 :");
scanf("%s",&string1);
printf("\n");
printf("string2 = %s\n\n",string2);
printf("string1 + 3 caracteres de string 2 =
%s\n",strncat(string1,string2,3));
printf("\n");
return(0);
}

6.5 Função que determina se duas strings são iguais


int streql(char *str1, char *str2)
{
while((*str1 == *str2) && (*str1))
{
str1++;
str2++;
}
return((*str1 == NULL) && (*str2 == NULL));
}

6.6 Convertendo uma string para maiúsculas

Para converter uma string para maiúsculas use a função strupr( ). Esta função faz parte do
arquivo de cabeçalho string.h. Sua sintaxe é:

strupr(string)

Exemplo:

/* Convertendo uma string em maiúsculas


* usando a função strupr() */

#include <stdio.h>
#include <string.h>

int main()
{
char string[20];

printf("\n");
printf("Convertendo uma string para maiúsculas\n");
printf("------------------------------------\n");
printf("\n");
printf("Entre com a string :");
scanf("%s",&string);
printf("\n");
printf("string digitada : %s\n",string);
printf("\n");
printf("Convertendo para maiúsculas : %s\n",strupr(string));
return(0);
}

6.7 Convertendo uma string para minúsculas

Para converter uma string para minúsculas use a função strlwr( ). Esta função faz parte do
arquivo de cabeçalho string.h. Sua sintaxe é:

strlwr(string)

Exemplo:

/* Convertendo uma string em minúsculas


* usando a função strlwr() */

#include <stdio.h>
#include <string.h>

int main()
{
char string[20];

printf("\n");
printf("Convertendo uma string para minúsculas\n");
printf("------------------------------------\n");
printf("\n");
printf("Entre com a string :");
scanf("%s",&string);
printf("\n");
printf("string digitada : %s\n",string);
printf("\n");
printf("Convertendo para minúsculas : %s\n",strlwr(string));
return(0);
}

6.8 Localizando a primeira ocorrência de um caractere numa string

Para isso use a função strchr( ). Ela faz parte do arquivo de cabeçalho string.h. Sua sintaxe é:

strchr(string, caracter)

Este função retorna um ponteiro para a primeira ocorrência de "caracter". Caso "caracter"
não seja encontrado, ela retornará um ponteiro para o caractere NULL que marca o final da
string.

Exemplo:

/* Localizando o primeiro caracter numa string


* usando a função strchr()*/

#include <stdio.h>
#include <string.h>
int main()
{
char string[30] = "Teste da função strchr().";
char *ptr;

printf("\n%s\n",string);

ptr = strchr(string, 's');

if (*ptr)
{
printf("\n");
printf("A primeira ocorrência de s é na posição %d\n",ptr -
string);
}
else
printf("Caractere não encontrado.\n");

return(0);
}

6.9 Localizando a última ocorrência de um caractere numa string

Para isso use a função strrchr( ). Ela faz parte do arquivo de cabeçalho string.h. Sua sintaxe é:

strrchr(string, caracter)

Este função retorna um ponteiro para a última ocorrência de "caracter". Caso "caracter" não
seja encontrado, ela retornará um ponteiro para o caractere NULL que marca o final da string.

Exemplo:

/* Localizando o último caracter numa string


* usando a função strrchr()*/

#include <stdio.h>
#include <string.h>

int main()
{
char string[30] = "Teste da função strrchr().";
char *ptr;

printf("\n%s\n",string);

ptr = strrchr(string, 's');

if (*ptr)
{
printf("\n");
printf("A última ocorrência de s é na posição %d\n",ptr - string);
}
else
printf("Caractere não encontrado.\n");

return(0);
}
6.10 Função que conta o número de ocorrências de um caractere numa string
int contachar(char string[], char letra)
{
int contador, tamanho, ocorrencia = 0;
tamanho = strlen(string);
for(contador=1;contador <= tamanho;contador++)
if(string[contador] == letra)
ocorrencia++;
return(ocorrencia);
}
Abaixo segue um exemplo com a utilização da função contachar(). O exemplo considera que
ela faz parte do arquivo de cabeçalho <samfunc.h>:
#include <stdio.h>
#include <string.h>
#include <samfunc.h>

int main()
{
char *string[20];
char letra[2];
int nr;

printf("Testando a função contachar()\n");


printf("---------------------------\n");
printf("\n");
printf("Entre com a string :");
scanf("%s",&string);
printf("\n");
printf("Entre com a letra :");
scanf("%s",&letra);
nr = contachar(string,letra[0]);
printf("\n");
printf("Contando o número de ocorrências : %d\n",nr);
return(0);
}

6.11 Invertendo uma string utilizando a função strrev( )

Para inverter o conteúdo de uma string use a função strrev( ). Ela faz parte do arquivo de
cabaçalho string.h. Sua sintaxe é:

strrev(string)

Exemplo:

/* Invertendo uma string usando a


* função strrev() */

#include <stdio.h>
#include <string.h>

int main()
{
char string[20];

printf("\n");
printf("Invertendo uma string\n");
printf("---------------------\n");
printf("\n");
printf("Entre com a string :");
scanf("%s",&string);
printf("\n");
printf("Invertendo ==> %s",strrev(string));
return(0);
}

6.12 Substituindo os caracteres da string por um único caracter

Para substituir todos os caracteres da string pelo mesmo caracter use a função strset( ). Ela
faz parte do arquivo de cabeçalho string.h. Sua sintaxe é:

strset(string,caracter)

Exemplo:

/* Substituindo todos os caracteres da string


* pelo mesmo caracter usando a função strset() */

#include <stdio.h>
#include <string.h>

int main()
{
char string[20];
char caracter[2];

printf("\n");
printf("Substituindo os caracteres da string\n");
printf("------------------------------------\n");
printf("\n");
printf("Digite a string :");
scanf("%s",&string);
printf("\n");
printf("Caractere :");
scanf("%s",&caracter);
printf("\n");
printf("Substituindo ==> %s",strset(string,caracter[0]));
return(0);
}

6.13 Comparando duas strings

Para comparar duas strings use a função strcmp( ). Ela faz parte do arquivo de cabeçalho
string.h. Sua sintaxe é:

strcmp(string1,string2)

Se as strings forem iguais a função retorna zero, se string1 for maior a função retorna um
valor menor que zero e se string2 for maior a função retorna um valor maior que zero.

Exemplo:

/* Comparando duas strings com a função strcmp() */


#include <stdio.h>
#include <string.h>

int main()
{
char string1[20],string2[20];
int retorno;

printf("\n");
printf("Comparando duas strings\n");
printf("-----------------------\n");
printf("\n");
printf("Entre com a primeira string :");
scanf("%s",&string1);
printf("\n");
printf("Entre com a segunda string :");
scanf("%s",&string2);
printf("\n");

retorno = strcmp(string1,string2);

if(retorno == 0)
printf("As strings são iguais.\n");
else if(retorno < 0)
printf("A string1 , maior.\n");
else
printf("A string2 , maior.\n");

return(0);
}
OBSERVAÇÕES:

1. A função strcmp( ) possui uma variante, a função strncmp( ) que compara os n


primeiros caracteres de duas strings. Sua sintaxe é:

strncmp(string1,string2,nr_caracteres)

2. Existem ainda as funções stricmp( ) e strncmpi( ) que comparam duas strings sem
considerar a caixa das letras (maiúsculas ou minúsculas).

6.14 Convertendo strings em números

Para converter strings em números utilize as funções abaixo:

FUNÇÃO CONVERTE STRINGS EM


atof(string) float
atoi(string) int
atol(string) long int
strtod(string) double
strtol(string) long
Estas funções fazem parte do arquivo de cabeçalho stdlib.h

Exemplo:

/* Convertendo strings em números */


#include <stdio.h>
#include <stdlib.h>

int main()
{
char string1[20],string2[20];

printf("\n");
printf("Convertendo strings em números\n");
printf("------------------------------\n");
printf("\n");
printf("Entre com a primeira string :");
scanf("%s",&string1);
printf("\n");
printf("Entre com a segunda string :");
scanf("%s",&string2);
printf("\n");
printf("string1 + string2 = %f",atof(string1) + atof(string2));
return(0);
}

6.15 Duplicando uma string

Para duplicar uma string use a função strdup( ). Ela está no arquivo de cabeçalho string.h.
Sua sintaxe é:

*strdup(string)

Exemplo:

/* Duplicando uma string */

#include <stdio.h>
#include <string.h>

int main()
{
char string[20];
char *copia;

printf("\n");
printf("Duplicando uma string\n");
printf("---------------------\n");
printf("\n");
printf("Entre com a string :");
scanf("%s",&string);
printf("\n");
copia = strdup(string);
printf("string ==> %s\n",string);
printf("cópia ==> %s\n",copia);
return(0);
}
6.16 Localizando uma substring dentro da string

Para localizar uma substring dentro da string use a função strstr( ). Ela pertence ao arquivo de
cabeçalho string.h e sua sintaxe é:

strstr(string,substring)

Se a substring existir dentro da string, a função retornará um ponteiro para a primeira letra da
substring, senão retornará NULL.

Exemplo:

/* Localizando uma substring dentro de uma string */

#include <stdio.h>
#include <string.h>

int main()
{
char string[20],substring[20];
char *extrai;
int tamanho;

printf("\n");
printf("Localizando uma substring dentro da string\n");
printf("------------------------------------------\n");
printf("\n");
printf("Entre com a string :");
scanf("%s",&string);
printf("\n");
printf("Entre com a substring :");
scanf("%s",&substring);
tamanho = strlen(substring);
extrai = strstr(string,substring);
printf("\n");

if(extrai)
{
printf("A string contém a substring.\n");
printf("A substring começa na posição %d.\n",extrai-string);
printf("A substring tem %d caracteres.\n",tamanho);
}
else
printf("A string não contém a substring.\n");

return(0);
}

6.17 Função que remove uma substring de dentro de uma string


#include <stdio.h>
#include <string.h>

char *sstr(char *string, char *substring)


{
char *extrai;
int tamanho,contador;
tamanho = strlen(substring);
extrai = strstr(string,substring);

if(extrai)
{
for(contador = 0;contador < tamanho; contador++)
extrai[contador] = string[(extrai - string) + contador];
extrai[contador] = NULL;
return(extrai);
}
else
return(" ");
}

int main()
{
char string[20],substring[20];

printf("\n");
printf("Entre com a string :");
scanf("%s",&string);
printf("\n");
printf("Entre com a substring :");
scanf("%s",&substring);
printf("\n");
printf("substring ==> %s\n",sstr(string,substring));

return(0);
}

6.18 Função que substitui uma subtring por outra


#include <stdio.h>
#include <string.h>

char *subs_str(char *string, char *substring, char *nova)


{
char *extrai;
int tamanho1,tamanho2,contador;

tamanho1 = strlen(substring);
tamanho2 = strlen(nova);

if((tamanho1 > tamanho2) || (tamanho2 > tamanho1))


return(" ");
else
{
extrai = strstr(string,substring);

if(extrai)
{
for(contador = 0;contador < tamanho1; contador++)
string[(extrai - string) + contador] = nova[contador];
return(string);
}
else
return(" ");
}
}
int main()
{
char string[20],substring[20],nova[20];

printf("\n");
printf("Entre com a string :");
scanf("%s",&string);
printf("\n");
printf("Entre com a substring :");
scanf("%s",&substring);
printf("\n");
printf("Entre com a nova substring :");
scanf("%s",&nova);
printf("\n");
printf("nova string ==> %s\n",subs_str(string,substring,nova));

return(0);
}

6.19 Invertendo uma string sem o uso da função strrev( )


/* Invertendo uma string */

#include <stdio.h>
#include <string.h>

int main()
{
char string[100],invertida[100];
char *caracter;
int tamanho,contador;

printf("\n");
printf("Invertendo uma string\n");
printf("---------------------\n");
printf("\n");
printf("Entre com a string :");
scanf("%s",&string);

tamanho = strlen(string);
contador = tamanho;

caracter = &string;

while(*caracter)
{
invertida[(contador - 1)] = *caracter;
*(caracter++);
contador--;
}
invertida[tamanho] = NULL;

printf("\n");
printf("Invertendo ==> %s\n\n",invertida);
return(0);
}
[ Voltar ] [ Índice ] [ Avançar ]

También podría gustarte