Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
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. 

 

Editado por Simon Viegas

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.

Editado por Simon Viegas
  • 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

 

Editado por giu_d
  • 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:

Editado por giu_d
corrigir comentário
  • 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






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

×