Ir ao conteúdo

Posts recomendados

Postado

Como é que eu consigo verificar se uma string esta vazia ?
 

#include <stdio.h> 
#include <string.h>
int main(void) {  
 
char frase[100];
int comp,i=0;
printf("Introduza uma frase ");

gets(frase);
comp=strlen(frase);


do{
    printf("%d-%c \n",i+1,frase[comp-i-1]);
    i++;
    
}while(i<comp);
           return 0;
            }

Pergunta: Altere o código para que o programa insista no pedido de uma frase sempre que esta seja vazia. 

 

Postado

@rsd_17 Olá. Pelo enunciado é difícil saber exatamente o q você quer. Mas pelo q entendi seria algo assim:

 

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

void limpa_linha() {
    scanf("%*[^\n]");
    scanf("%*c");
}

int main() {

    char frase[100];
    int i;

    do {
        printf("\nDigite uma frase: ");
        scanf("%[^\n]s", frase);
        limpa_linha();

        for (i = 0; i < strlen(frase); i++) {
            if (frase[i] != ' ' && isspace(frase[i])) {
                printf("\nNao foi digitado nada!\n");
                break;
            }
        }

    } while (isspace(frase[i]));

    return 0;
}

Vê se é isso mesmo q você quer

adicionado 1 minuto depois

Do modo como está, se você não digitar nada e dar um "Enter", vai voltar a ser pedido para digitar uma frase

Postado

@giu_d É  um exercicio de um exame é nos dado esse codigo e pede  para que no caso de o utilizador nao inserir nada na frase ou seja se  a string for vazia, insista para que o utilizador insira uma frase. 

O seu codigo pede a frase mas se eu carregar no enter o programa termina. Outra coisa o que é isso: isspace(frase) ? 

Postado

@rsd_17

9 minutos atrás, rsd_17 disse:

Outra coisa o que é isso: isspace(frase)

 

isspace é uma função do C da biblioteca <ctype.c> que verifica se um caractere é branco, ou vazio. Ex:  (('  ',\n,\t,\r,\f))

 

12 minutos atrás, rsd_17 disse:

O seu codigo pede a frase mas se eu carregar no enter o programa termina

 

Se não digitar nada aí e dar um enter o programa termina?

adicionado 1 minuto depois

Testei aqui sem a função limpa_linha e o código cai em loop

adicionado 3 minutos depois

Faça uso da função limpa_linha para ver se funciona

adicionado 6 minutos depois
18 minutos atrás, rsd_17 disse:

É  um exercicio de um exame

 

Nesse caso eu nem deveria ter dado uma resposta

  • Membro VIP
Postado

@rsd_17, o código é em C ou em C++?

 

São linguagens diferentes!

adicionado 17 minutos depois

1#

Cuidado com a indentação. O código SEMPRE deve ficar perfeitamente indentado!

 

 

 

2#

Em fim... em C, o código poderia ficar mais ou menos assim:

#include <stdio.h> 
#include <string.h>
int main(void) {  
    char frase[100];
    int  comp, i=0;
    
    do {
        printf("Introduza uma frase ");
        gets(frase); //lê a frase
        comp=strlen(frase); //pega o seu comprimento
    } while (comp==0); //enquanto o comrpimento for igual a 0
    do {
        printf("%d-%c \n",i+1,frase[comp-i-1]);
        i++;
    } while(i<comp);
    return 0;
}

Obs.: salve o arquivo com .c, em vez de .cpp.

 

 

 

3#

Caso seja em C++, save como .cpp e altere os comando que são do C++.  A lógica será exatamente a mesma, só muda a sintaxe!

 

PS: não programe em C++ utilizando a sintaxe C. É incoerente!

 

***

 

No aguardo.

  • Curtir 1
  • Membro VIP
Postado
29 minutos atrás, rsd_17 disse:

@Simon Viegas Eu nem sei bem mas acho que é c++ estamos a trabalhar com o dev c++.

Funciona perfeitamente muito obrigada :) 

 

 

Um compilador em C++ compila tanto em C, quando em C++. Na verdade, o C++ seria um C, só que contém ainda mais funcionalidades.

 

Seu código está em C puro. A sugestão seria:

23 horas atrás, Simon Viegas disse:

salve o arquivo com .c, em vez de .cpp.

 

Então:

Citação

"a grande diferença entre as duas está nos paradigmas usados: enquanto que C é uma linguagem funcional, C++ é para programação orientada para objetos (além de funcional)."

 

Fonte

 

RESUMINDO:

Prefira programar apenas em C. Desta forma, irá também está aprendendo C++ (este último "contém" o primeiro), só que ao mesmo tempo estará mais familiarizado que os comando que está usando é em C puro!!! Ai, quando estiver num estágio mais avançados, e precisar de recursos mais avançados, entenderá o que são apenas para C++, inclusive que podem utilizar as mesma funcionalidades do C, só que mais sofisticadas (internamente). Não acho uma boa ideia misturar uma coisa (C) e outra (C++)... mas em fim.

Postado

@Simon Viegas

7 minutos atrás, Simon Viegas disse:

Prefira programar apenas em C. Desta forma, irá também está aprendendo C++ (este último "contém" o primeiro)

 

Perguntei p meu instrutor se teria problemas em estudar C e C++ ao mesmo tempo. Ele, com a vasta experiência q tem na área, me recomendou primeiro estudar C, depois partir para o C++ :)

Ele mencionou a seguinte frase com relação ao C/C++: "O C++ é um C turbinado"

C é uma linguagem procedural, enquanto q o C++ é uma linguagem orientada a objetos

 

Postado

@Simon Viegas e @giu_d Obrigada mas eu acho que nao posso decidir o que posso aprender estou no 1 ano de licenciatura e trabalhamos sempre com o dev c++, e eu neste momento estou a tentar aprender a resolver problemas propostos pelos professores nas fichas de trabalho usando esse programa.  

  • Membro VIP
Postado
17 minutos atrás, rsd_17 disse:

@Simon Viegas e @giu_d Obrigada mas eu acho que nao posso decidir o que posso aprender estou no 1 ano de licenciatura e trabalhamos sempre com o dev c++, e eu neste momento estou a tentar aprender a resolver problemas propostos pelos professores nas fichas de trabalho usando esse programa.  

 

É simples: você está estudando C. Apenas salve o arquivo como .c. Simples.

 

DevC++ é apenas o nome do "editor de texto"... não se atenha a esse "C++" no nome!

  • Curtir 1
Postado

@rsd_17

1 hora atrás, rsd_17 disse:

mas eu acho que nao posso decidir o que posso aprender

 

Creio q entendi o q você quis dizer com isso. Não cabe a você decidir o q estudar, sendo q está no 1º ano de Licenciatura.

Se eles decidir q você deve estudar Java, por ex, só resta fazer isso,  estudar Java

Mas apenas para te orientar, baseado no seu código, você está estudando C, e não C++  

Creio q seria importante,  para um melhor aprendizado,  saber diferenciar bem entre C e C++

Obs: Se está começando a programar em C é normal mesmo confundir entre C e C++, comigo foi assim. Com o tempo você vai conhecer bem as diferenças entre as duas, pode ficar tranquila qto a isso

O DevC++ é apenas o nome do programa q vocês estão usando, ele serve tanto para códigos em C como códigos em C++  :thumbsup:

  • Membro VIP
Postado

Só para reforçar... as sintaxe do C funciona no C++... ou seja, programar em C, de certo modo também está programando em C++. Mas é sugerível propositalmente diferenciar!!!

 

A dica continua: simplesmente salve os arquivos com .c. Ex.: biblioteca.c. Quando mandar compilar, o DevC++ só vai usar os comandos que funcionam apenas no C. Se tivesse algo que é apenas do C++, não iria compilar... e veria que não é do C (supondo que o código está correto, é claro). O código que foi postado está assim... vai funcionar normalmente!. Apenas, no futuro, quando começar a programar de fato em "C++ puro", saberá com mais facilidade o que é apenas do C puro, e o que é apenas do C++... :D

 

Se começar a estudar C++ usando sintaxe do C, vai misturar tudo, rs.

 

RESUMINDO:
Seguindo esse raciocínio, se o programa teria que ser feito em C++, o seu código não serviria!!! (vai funcionar, mas isso não é C++, é apenas C puro).

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!