Me ajudem a resolver um exercício utilizando a linguagem C sou iniciante.
19/07/2019
0
Não estou conseguindo resolver esse exercício sei que é simples eu sinto isso, porém para mim que sou iniciante ele se torna algo difícil me ajudem por gentileza.
Escreva um programa que leia duas strings e as coloque na tela. Imprima também a
segunda letra de cada string.
Escreva um programa que leia duas strings e as coloque na tela. Imprima também a
segunda letra de cada string.
Tassio
Curtir tópico
+ 0
Responder
Posts
20/07/2019
João Júnior
Não estou conseguindo resolver esse exercício sei que é simples eu sinto isso, porém para mim que sou iniciante ele se torna algo difícil me ajudem por gentileza.
Escreva um programa que leia duas strings e as coloque na tela. Imprima também a
segunda letra de cada string.
Escreva um programa que leia duas strings e as coloque na tela. Imprima também a
segunda letra de cada string.
Tássio, para resolver essa questão você deve ter em mente três coisas:
1 - Na linguagem C, as strings são cadeias de caracteres representadas por arrays, ou seja, uma string é um array de char;
Exemplo: "Amanhã" equivale a
char texto[] = {'A', 'm', 'a', 'n', 'h', 'ã'};
2 - A linguagem C é zero-based, isto é, as variáveis indexadas sempre têm como índice inicial o valor zero (0). Com efeito, a segunda posição de um array é a posição um (1). Do exemplo anterior:
texto[1] = 'm';
3 - Na linguagem C, os arrays são ponteiros, isto é, há um endereço que guarda outro endereço de memória. Por esse motivo, não é necessário informar o endereço de um array (&).
Observe também que ao ler uma string, usa-se comumente a função scanf com parâmetro o especificador de formato para string (%s). Contudo, quando se quer 'imprimir' um caractere de uma string, a função printf deve vir com o especificador de formato para caractere (%c).
Feitas essas considerações, entenderá o exemplo abaixo:
#include<stdio.h> #include<stdlib.h> int main(){ char string1[10]; char string2[10]; printf("Informe duas strings...\\n"); printf("String 01: "); scanf("%s", string1); printf("\\nString 02: "); scanf("%s", string2); printf("As strings informadas foram:\\n\\n"); printf("String1: %s", string1); printf("\\nString2: %s", string2); printf("\\n\\nSegunda letra da string 01-> %c", string1[1]); printf("\\n\\nSegunda letra da string 02-> %c", string2[1]); printf("\\n"); system("pause"); return 0; }
Observe porém que a função scanf cessa a leitura quando encontra um espaço, ou seja, não lê uma frase, frase composta por mais de uma palavra. Para resolver esse problema, pode-se usar a forma scanf("%50[^\\n]s", endereço) ou a função fgets(string, tamanho, stdin).
Explicação (simplificada):
scanf("%50[^\\n]s", endereço)
-> %50s = ler uma string de tamanho 50
-> [^] = desconsiderar o que segue
-> [^\\n] = desconsiderar os espaços seguintes
-> "%50[^\\n]" = ler uma string de tamanho 50 desconsiderando os espaços como indicador de nova palavra (sem cortar - sem tokenizar).
fgets(string, tamanho, stdin)
-> string = strin a ser lida
-> tamanho = tamanho da instring
-> stdin = sistema padrão de entrada de dados (teclado) - "standard input"
Responder
Clique aqui para fazer login e interagir na Comunidade :)