Olá a todos , estou com uma dúvida imagino eu que bem de principiante.
A relação da dúvida está nas linhas 34 e 59.
O programa é o seguinte, preciso capturar uma string de tamanho 50, ver se na string possui alguma vogal, e se possuir pedir para o usuário digitar um novo caractere, e depois imprimir uma nova string substituindo todas as vogais por esse caractere digitado.
E minha dúvida: Por que pra capturar o novo caractere eu preciso usar %c mas para imprimir eu preciso usar %s? Tentei capturar e imprimir com %c e não deu certo, tentei capturar com %s também não deu certo, e tentei capturar também usando gets(); também sem sucesso, só deu certo capturando %c e imprimir %s, procurei a diferença dos dois na internet, não consegui encontrar nada que sanasse minha dúvida.
#include<stdio.h>#include<stdlib.h>#include<string.h>int main (){char string[50], n;int i, x, qv=0, verdadeiro=1;/*DECLAREI ESSA VARIAVEL PARA SABERMOS SE PRECISAMOS
OU não PEDIR PARA QUE O USUARIO DIGITE UM NOVO CARACTERE*/char vogais[11]={'a','A','e','E','i','I','o','O','u','U'};
printf ("Digite a string: ");
gets(string);for(i =0; i < string[i]!='\0'; i++)/*DECOBRIR QUANTAS VOGAIS TEM*/{for(x =0; x < vogais[x]!='\0'; x++){if(string[i]== vogais[x]){
qv++;/*SOMA +1 TODAS AS VEZES QUE TIVER ALGUMA VOGAL*/
verdadeiro=0;/*SE ENTROU NO BLOCO SIGNIFICA QUE TEM VOGAIS
PORTANTO PRECISAMOS CAPTURAR OUTRO CARACTERE DO USUARIO*/}else{}/*SE não TEM VOGAL não FAZ NADA*/}}if(verdadeiro ==0)/*SE TIVER VOGAL ATRIBUI 0 PARA verdadeiro, então
SE VERDADEIRO FOR IGUAL A 0 (ZERO) PEDIMOS OUTRA VARIÁVEL AO USUARIO*/{
printf ("Digite um novo caractere para substituir as vogais da string: ");/*PEDIMOS NOVO CARACTERE*/
scanf ("%c",&n);/*####DÚVIDA####*/}else/*MAS SE não TIVER ENTRADO DO BLOCO QUE VERIFICA SE TEM VOGAL
VERDADEIRO VAI TER O VALOR 1 DEFINIDO NA NO INICIO DO CODIGO
E SE TEM VALOR 1 SIGNIFICA QUE não TEM VOGAL
então ENCERRAMOS O PROGRAMA AQUI*/{
printf ("\nEssa string não possui vogais!\n\n");
exit (0);}for(i =0; i < string[i]!='\0'; i++)/*caso o programa chegue ate aqui
ele ira atribuir o novo caractere a todas as vogais da string*/{for(x =0; x < vogais[x]!='\0'; x++){if(string[i]== vogais[x]){
string[i]=n;}}}
printf ("A string possuia %d vogais!\n", qv);/*imprimri quantas vogais a string possuia*/
printf ("Agora nossa nova string é: %s\n\n", string);/*IMPRIMI A NOVA STRING*//*####DUVIDA####*/
system ("pause");return0;}
Comentei as linhas que estou com dúvida.
EDIT: Comentei o código todo e adicionei algumas outras coisas ao programa(verificar se vai ser necessário pedir outro caractere ao usuário).
Pergunta
princknoby
Olá a todos , estou com uma dúvida imagino eu que bem de principiante.
A relação da dúvida está nas linhas 34 e 59.
O programa é o seguinte, preciso capturar uma string de tamanho 50, ver se na string possui alguma vogal, e se possuir pedir para o usuário digitar um novo caractere, e depois imprimir uma nova string substituindo todas as vogais por esse caractere digitado.
E minha dúvida: Por que pra capturar o novo caractere eu preciso usar %c mas para imprimir eu preciso usar %s? Tentei capturar e imprimir com %c e não deu certo, tentei capturar com %s também não deu certo, e tentei capturar também usando gets(); também sem sucesso, só deu certo capturando %c e imprimir %s, procurei a diferença dos dois na internet, não consegui encontrar nada que sanasse minha dúvida.
Comentei as linhas que estou com dúvida.
EDIT: Comentei o código todo e adicionei algumas outras coisas ao programa(verificar se vai ser necessário pedir outro caractere ao usuário).
Desde já, obrigado.
Editado por princknobyformatação, comentários
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.