Me ajudem a resolver um exercício utilizando a linguagem C sou iniciante.

19/07/2019

10

C

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.
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.


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

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários. Para saber mais sobre o uso de cookies,
consulte nossa política de privacidade. Ao continuar navegando em nosso site, você concorda com a nossa política.

Aceitar