Porque certo programa no Dev-C++ não roda no codeblocks?

Porque certo programa no Dev-C++ não roda no codeblocks?

Se você não passar nenhum detalhe, ninguém vai adivinhar o que você está fazendo.

Que programa é esse?

Qual o erro que você está recebendo?

Esse programa não roda direito no codeblocks:

#include <stdio.h>

int main(){

char s[50];

printf("Digite algo(scanf convencional):\n");
scanf("%s",s);
fflush(stdin);

printf("Resultado:%s\n\n",s);

printf("Digite algo(scanf aprimorado):\n");
scanf("#50[^\n]s",s);
fflush(stdin);

printf("Resultado:%s\n\n",s);

}


Ele pula o scanf aprimorado no codeblocks.Disseram o seguinte:

CodeBlocks e DevC++ podem usar versões diferentes do compilador.

No seu outro tópico de ontem já explicamos como corrigir esse código:

Talvez esteja na hora de parar de ignorar as respostas que lhe são passadas.

Pôxa, você já havia postado esse erro e você recebeu respostas bem detalhadas neste tópico.

1 curtida

Me desculpem,é que eu esqueço o titulo da postagem nesse fórum,pois eu participo de vários foruns.Isso confunde a minha cabeça que é fraca,e eu esqueço de pesquisar o que eu já fiz.

Ele não roda no codeblocks,porque os compiladores do codeblocks e do Dev-c++ são diferentes neh?

Conforme o colega @hugokotsubo já explicou,
não funciona porque no segundo scanf, o especificador de formato deve começar com %, e não #.

Sim,eu entendi e coloquei o % no código,o código ficou assim:

#include <stdio.h>

int main(){

char s[50];

printf("Digite algo(scanf convencional):\n");
scanf("%s",s);
fflush(stdin);

printf("Resultado:%s\n\n",s);

printf("Digite algo(scanf aprimorado):\n");
scanf("%50[^\n]s",s);
fflush(stdin);

printf("Resultado:%s\n\n",s);

}

Mas não adianta o programa no codeblocks ainda pula o scanf aprimorado,portanto de nada adiantou.

Por favor, da próxima vez que indicarmos um link, leia tudo.

No caso, o link (que é o mesmo que já indicamos acima) é esse.

Lá explica tudo, não só o problema no scanf, como também o caso do fflush(stdin), que não é um código portável (não é garantido que funcione corretamente em todos os ambientes, como deu pra perceber). E no link já citado também tem uma alternativa para resolver isso.

1 curtida

Eu entendi mais ou menos,sei que o programa correto é esse que tu fez que é esse:

void clearBuffer(FILE *fp) {
    int c;
    while ((c = fgetc(fp)) != EOF && c != '\n');
}

int main() {
    char s[50];

    printf("Digite algo(scanf convencional):\n");
    scanf("%s", s);
    printf("Resultado:%s\n\n", s);
    clearBuffer(stdin);

    printf("Digite algo(scanf aprimorado):\n");
    scanf("%50[^\n]s", s);
    printf("Resultado:%s\n\n", s);
    return 0;
}

Mas eu executei no codeblocks e deu erro na linha 1 onde está a palavra FILE do ClearBuffer:Veja na foto:

A mensagem de erro é muito clara, faltou colocar no início:

#include <stdio.h>
1 curtida

Executou certinho o programa agora:Veja na foto:

Me desculpem,se as vezes eu não entendo,é que é muita informação para minha cabecinha,que é fraca por sinal.

Prezado, pare de se vitimizar, se você ler as respostas com calma e atenção vai dar certo, não fique se afobando.

1 curtida

Só uma última dica. O DevCpp é uma ferramenta muitíssimo antiga, que usa uma versão pré-histórica do compilador C. A última versão dele é de 2015, mas já é baseada em um código que deve ter mais de 20 anos.

Muita coisa feita no CodeBlocks não vai funcionar nele. O ideal seria não utiliza-lo mesmo.

Não entendi,é para não usar o Dev-C++ ou para não usar o Codeblocks?

Não use o DevC++. É velho e defasado.

Prefira usar o CodeBlocks.

Abraço.

2 curtidas

Sim,o codeblocks eu uso porque gosto de Linux,mas na epoca que eu usava parece que o Dev-C++ só funcionava na versão 2016,as mais atuais vem bugada.

Melhor mesmo seria usar uma IDE mais nova, como:

Para quem disser que o VS Code não é IDE… bem, ele é mais IDE do que o CodeBlocks e o DevCpp.

1 curtida

Adotei o VS Code esse ano como IDE para C nas minhas aulas de algoritmos e como ferramenta do início da disciplina em Programação Orientada a Objetos. Funciona muito bem. Para Java eu particularmente ainda prefiro o NetBeans quando começamos a lidar com projetinhos maiores, com mais arquivos, organização em pacotes, GUI etc. É menos burocrático que o IntelliJ e ABSURDAMENTE mais estável que o Eclipse, que da MUITO pau.

Sinceramente, para o PO, acho melhor ficar no Dev ou no Code::Blocks mesmo. Eles já vem com o compilador pré-configurado e é só programar. Se tiver que instalar alguma runtime, configurar etc. não vai dar muito certo. Se bem que, agora pensando rapidamente, o PO está trabalhando em ambiente Linux que já vem com o compilador pronto pra usar na maioria das distribuições. Basta instalar o VS Code e algumas extensões…