Ir ao conteúdo
  • Cadastre-se
rsd_17

C String vazia. Como faço?

Recommended Posts

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. 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@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

Compartilhar este post


Link para o post
Compartilhar em outros sites

@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) ? 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@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

Compartilhar este post


Link para o post
Compartilhar em outros sites

@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 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Funciona perfeitamente muito obrigada :) 

 

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites
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.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@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

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
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 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

@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:

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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

×