O desafio:
Insira o texto de um arquivo e faça a saída para outro. A solução deve ser uma função completa e funcional.
Nota: Esta é uma pergunta de controle de código . Por favor, não leve a sério a pergunta e / ou respostas. Mais informações aqui .
popularity-contest
code-trolling
Comunidade
fonte
fonte
Respostas:
C
O objetivo de ter várias linguagens de programação é que você precisa usar a ferramenta certa para o trabalho.
Nesse caso, queremos copiar bytes de um arquivo para outro.
Embora possamos usar algo sofisticado como bash ou ruby, ou cair no poder do ASM, precisamos de algo rápido, bom com bits e rápido.
A escolha óbvia é C.
A maneira mais simples de fazer isso seria assim:
Isso é ruim, porque ele lê lixo em coisas como cygwin, é completamente chinês para iniciantes, o assusta quando ele percebe que é um pedido de ajuda e, obviamente, porque C.
fonte
#define VERY filename1
#define NOT filename2
#define _ 1
puder fazer(;_;)
o loop for, faça com que pareça um smiley.#define LOL fclose
fez o meu dia#define LOL fclose
, que nunca é usada, é minha obra-prima.sh
Eu gosto da simplicidade deste.
Realmente só funciona corretamente se
File1.txt
contiver "File1.text" ...fonte
File2.txt
, não o conteúdo real deFile1.txt
AutoHotKey
Você deve primeiro abrir os arquivos no bloco de notas ou em algum outro editor de texto que faça com que os nomes das janelas iniciem com os nomes dos arquivos. Em seguida, ele copia o conteúdo do arquivo1 para a área de transferência (literalmente, usando ctrl+ c) e o cola no arquivo2, sobrescrevendo tudo o que está atualmente nele e salva.
Resolve o problema, mas de uma maneira muito inconveniente e bastante inútil. Provavelmente, seria mais fácil copiar e colar manualmente.
fonte
Como todos sabem, o perl é muito bom para manipular arquivos. Este código copiará o conteúdo de um arquivo para outro e fará isso com redundância extra para uma boa medida.
Para segurança, teste-o em um arquivo pequeno primeiro. Quando você estiver convencido de sua correção, poderá colocá-lo em produção para uso em arquivos muito grandes sem se preocupar.
fonte
C #
Para conseguir isso, você deve fazer várias coisas:
Aqui está o código:
fonte
Em quatro etapas simples:
lpr
comando para isso.fonte
Java
Muitas pessoas acham útil tentar usar expressões regulares ou avaliar seqüências de caracteres para copiá-las de um arquivo para outro, no entanto, esse método de programação é desleixado. Primeiro, usamos Java porque o OOP permite mais transparência em nosso código e, em segundo lugar, usamos uma interface interativa para receber os dados do primeiro arquivo e gravá-los no segundo.
Em teoria (não testei), isso faz com que o usuário insira manualmente o conteúdo do primeiro arquivo (palavra por palavra) e depois o grave no segundo arquivo. Essa resposta é uma brincadeira com a ambiguidade da pergunta sobre o que significa "inserir texto de um arquivo", e os nomes de variáveis malucos (gerados aleatoriamente) foram apenas para diversão extra.
fonte
sh
Como o @Shingetsu apontou, é preciso usar a ferramenta certa para o trabalho certo. Copiar o conteúdo de um arquivo para outro é um problema antigo, e a melhor ferramenta para essas tarefas de gerenciamento de arquivos é usar o shell.
Um comando shell que todo programador tem de conhecimento themself com é o comum
tac
de comando, usado para tac k o conteúdo de arquivos juntos, um após o outro. Como um caso especial disso, quando apenas um arquivo é passado, ele é simplesmente cuspido novamente. Simplesmente redirecionamos a saída para o arquivo apropriado:Simples e direto ao ponto, sem truques!
fonte
Perl
Antivírus incluído.
fonte
Lote do Windows
(porque você tem que ter essa linguagem supostamente "morta" ;-)
Você simplesmente chama isso como
copy.bat file1.txt file2.txt
(ou qualquer arquivo que desejar)Se ao menos isso mantivesse quebras de linha ...
fonte
setlocal enabledelayedexpansion
eset thisline=!thisline!%%I
funciona apenas no Windows CMD. No DOS deve funcionar simplesset thisline=%thisline%%%I
Linq
Eficiência não é importante, correção é. Escrever em um estilo funcional resulta em um código mais claro e menos propenso a erros. Se o desempenho for um problema, a última linha ToArray () poderá ser omitida. É melhor ser preguiçoso de qualquer maneira.
fonte
Conversa fiada
Ainda existe uma biblioteca portada para vários dialetos do Smalltalk (Visualworks, Gemstone Squeak / Pharo, ...) chamado Xtreams que tornam essa tarefa mais do que fácil.
FileStream seria tão simples como
'foo' asFilename reading
e'bar' asFilename writing
por exemplo, em VisualWorks, mas são dialeto específico.Por essa razão, demonstro o algoritmo com fluxos internos neutros de dialeto.
Uma boa idéia seria processar cada código de byte em ordem crescente:
Obviamente, também é possível processar em ordem aleatória, mas receio que isso torne o código um pouco compacto demais:
EDITAR
Ah, estúpido, eu não vi a solução log2:
fonte
BATER
no terminal # 1 com o IP, 192.168.1.2
no terminal # 2 com o IP, 192.168.1.3
Isso criptografará e enviará
mydocument.docx
, usandonc
egpg
, para o terminal nº 1. Você precisará digitar a senha no terminal nº 2 e depois no terminal nº 1.fonte
C ++
Isso é um pouco baseado na resposta da Shingetsu , mas não pude resistir. Está em pleno funcionamento, mas nenhum aluno a enviaria ao professor (espero). Se eles estiverem dispostos a analisar o código, poderão resolver seu problema:
fonte
Pitão
Insere o texto do arquivo1.txt e o envia para o arquivo2.txt
Está completo e "funcionando". Ninguém disse nada sobre escrever a entrada como ela é. Todos os caracteres de entrada aparecem na saída. "getchar" é a parte trolling.
fonte
Mathematica, 44 caracteres
Implementação
Execução
Verifica
fonte
CopyFile
.DELPHI / PASCAL (copiar de f1.txt para f2.txt)
fonte
MASM
Certamente não sou especialista em montagem, mas abaixo está meu pequeno trecho:
fonte
C ++
Você notou o bit "função completa e funcional"? Enfim, aqui está a minha resposta:
fonte
Lua
Execute com um arquivo de entrada contendo
text from one file and output it to another. Solution should be a complete, working function.
.fonte
PHP
fonte
#! / bin / sh
Parece razoável, mas ineficiente se o arquivo for grande.
Funciona bem em arquivos ASCII, exceto quando o arquivo de entrada contém
-n
,-e
ou-E
. (Como esses são interpretados como argumentos porecho
.)Não produz a saída correta para todos os arquivos binários.
(Usando
printf "%s" "$contents" > output
sob/bin/bash
funciona um pouco melhor, mas isso ainda gera NULL bytes.)Ah, e é claro que não funciona para nomes de arquivos_containing_spaces. Mas esses arquivos são ilegais no UNIX% 20policy de qualquer maneira.
fonte