Ir ao conteúdo
  • Cadastre-se

C o que está errado nessse código


Posts recomendados

quero ficar escrevendo no programa e  granvado em txt com direito a acentos enter e tudo claro então achei esse exemplo mas não tá

#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
main(){

char string[50];
FILE *fp;
    fp = fopen("tarefas.txt","a");


while(strlen(gets(string))>0){
      fputs(string,fp);
      fputs("\n",fp); 
}
fclose(fp);

}

funcionando alguem sabe consertar

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

36 minutos atrás, Mayrinck Bernardo disse:

quero ficar escrevendo no programa e  granvado em txt com direito a acentos enter e tudo claro então achei esse exemplo mas não tá


#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
main(){

char string[50];
FILE *fp;
    fp = fopen("tarefas.txt","a");


while(strlen(gets(string))>0){
      fputs(string,fp);
      fputs("\n",fp); 
}
fclose(fp);

}

funcionando alguem sabe consertar

 

Já escrevi sobre isso aqui tempos atrás. E acho que não mudou nada. Eu acho que não vale a pena perder tempo com isso se tiver alternativa. Isso é um pesadelo para programar. Sério. Se ninguém está pagando para você fazer isso ou de dando uma nota por fazer exatamente isso sugiro deixar pra lá.

 

Você precisa usar Unicode e não ASCII para os caracteres. E manipular isso usando as funções Unicode e não as que está acostumado a usar.

 

Como funciona?

  • Tem um cenário que é gravar isso, se chamada encoding se for usar arquivos texto
  • Tem um outro que é mostrar isso na tela
  • tem um outro que é imprimir isso
  • tem um outro pior ainda que é transmitir isso de alguma forma para outros sistemas e ler desses outros sistemas...

ASCII v Unicode

Veja a tabela ASCII em http://asciitable.com  pequenina. Numa época eu sabia quase todos de cabeça, e os equivalentes EBCDIC que era outra codificação. Mas o mundo mudou :( Unicode por outro lado vai bem longe. Na versão 12.1 (2019) Unicode conta com mais de 137.000 caracteres cobrindo mais de 150  linguagens. 1062 caracteres formam o MES-2, MultiLingual European Character Set 2 e é um conjunto razoável que inclui caracteres latinos, gregos e cirílicos e pode servir para o que você quer. Veja em https://en.wikipedia.org/wiki/Unicode#Standardized_subsets por exemplo. 

 

Unicode é descrito em https://home.unicode.org/basic-info/overview/ e um banner no site já diz para que serve

 

unicode.thumb.png.72e87008360df9e01584028d0eedf6ec.png

 

Citação

"Um número único para todo caracter, não importando plataforma, programa ou linguagem"

 

Ambicioso, não?

 

Na prática

Por exemplo, uma biblioteca chama ICU que acho que foi criada inicialmente pela IBM suporta Unicode em várias linguagens, e sim, inclui C e C++ e java. Então se você quer oferecer isso em seus programas pode usar essas funções para manipular texto em seu programa. Só essas. ICU tem um site claro. Veja em http://site.icu-project.org/home

 

No windows  por exemplo você tem que se preocupar com muitas coisas: char usa um byte, mas unicode é um formato multibyte e pode usar até 4. Então não pode usar printf() ou scanf() ou strcpy() ou strcmp() em suas versões convencionais mas precisa encontrar suas irmãs no mundo unicode. E os novos tipos, como utf-16 e utf-32 para guardar essas novas letrinhas. Tem uma biblioteca Windows também, diferente da ICU.

 

Mas funciona?

Sim, claro. Tem que usar os tipos certos, as funções certas em cada ambiente, e se preparar para algumas surpresas. Acho que eu postei um programa em C aqui que lia e gravava Unicode em C mas tem muitos exemplos online melhores que o meu certamente. Mas pode pesquisar aqui no forum pelo que eu postei. Não me lembro do tópico e não dá pra eu procurar agora.

 

E no Windows em C C# ou C++?

Bem, veja lá onde tem tudo sobre Windows e terá a documentação e os tipos e funções que deve usar com Unicode, ou ao menos uma parte pequena dos caracteres... Começa por isso

#define _UNICODE
#include <tchar.h>
#include <wchar.h>

onde estão as funções novas. A correspondente de printf() por exemplo, direto da documentação

 

int printf(
   const char *format [,
   argument]...
);
int _printf_l(
   const char *format,
   locale_t locale [,
   argument]...
);
int wprintf(
   const wchar_t *format [,
   argument]...
);
int _wprintf_l(
   const wchar_t *format,
   locale_t locale [,
   argument]...
);

É muito chato. E já foi bem resolvido em outras plataformas, então pode ser mais fácil usar o navegador e javascript por exemplo. Porque os caras que mantêm os navegadores e HTML tem claro que se preocupar muito com todos os possíveis idiomas em uso por quem abre ou escreve um site afinal.

 

adicionado 23 minutos depois

Mais uma nota:

A console do Windows depende de uma recurso muito chato, codepages para escolher conjuntos de caracteres e é uma coisa do passado e é cheia de problemas e incompatibilidades. Fuja disso também e 

  • evite qualquer versão de Windows que não seja Windows 10 posterior a edicão de aniversário. Poruqe o suporte é muito melhor a Unicode
  • Rode seu programa no novo Terminal do Windows, que usa aceleração da GPU e é compatível com Unicode.  Você pode baixar da loja do Windows, claro. E esqueça a console.
  • Curtir 1
Link para o comentário
Compartilhar em outros sites

1 hora atrás, Mayrinck Bernardo disse:

como faz para usar isso no dev c 

 

?

 

Tem os headers? Testou?

 

Não deve fazer diferença. Esse compilador é praticamente o gcc do Linux eu acho.

 

Que versão está usando? De onde conseguiu?

 

adicionado 4 minutos depois

Ou por outro lado tentou o download da ICU no site que falei? Deve usar um desses caminhos.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

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