ป้อนข้อความจากไฟล์หนึ่งแล้วส่งออกไปยังอีกไฟล์หนึ่ง


13

ความท้าทาย:

ข้อความที่ป้อนจากไฟล์หนึ่งและส่งออกไปยังอีก วิธีแก้ปัญหาควรเป็นฟังก์ชั่นการทำงานที่สมบูรณ์

หมายเหตุ: นี่เป็นคำถามการกรุณาอย่าใช้คำถามและ / หรือคำตอบอย่างจริงจัง ข้อมูลเพิ่มเติมที่นี่


การล๊อครหัสอยู่ในขั้นตอนการลบออกตามท่าทางทางการ คำถามนี้มีจำนวนโหวตที่ยุติธรรมพร้อมคำตอบที่ได้คะแนนโหวตสูงมาก มันได้รับเพียงเล็กน้อยเกิน 50% "ลบ" โหวตในการสำรวจความคิดเห็นแต่เพียงประมาณ 8% ดังนั้นฉันล็อคมันสำหรับความสำคัญทางประวัติศาสตร์
Doorknob

คำตอบ:


40

จุดรวมของการมีหลายภาษาการเขียนโปรแกรมคือคุณต้องใช้เครื่องมือที่เหมาะสมสำหรับงาน
ในกรณีนี้เราต้องการคัดลอกไบต์จากไฟล์หนึ่งไปอีกไฟล์หนึ่ง
ในขณะที่เราสามารถใช้สิ่งแฟนซีเช่นทุบตีหรือทับทิมหรือตกอยู่ในอำนาจของ ASM เราต้องการบางสิ่งที่รวดเร็วดีด้วยบิตและรวดเร็ว
ตัวเลือกที่ชัดเจนคือ C.
วิธีที่ง่ายที่สุดในการทำเช่นนี้:

#include <stdio.h>
#define THEORY FILE
#define AND *
#define PRACTICE myfile1
#define SOLUTIONS myfile2
#define ARE fopen
#define IMPORTANT "r"
#define BAD "w"
#define LOL fclose
#define PLEASE fgetc
#define HELP fputc
#define ME return
#define NEVER for
#define SURRENDER !=
#define VERY filename1
#define NOT filename2
#define _ 1

int copyFile(char* filename1, char* filename2)
{
  THEORY AND PRACTICE = ARE (VERY, IMPORTANT);
  THEORY AND SOLUTIONS = ARE (NOT, BAD);
  NEVER (;_;)
  {
    HELP(PLEASE(PRACTICE),SOLUTIONS);
  }
  ME _SURRENDER_;
}

นี่คือความชั่วร้ายเพราะมันจะอ่านขยะในสิ่งต่าง ๆ เช่น cygwin เป็นภาษาจีนโดยสมบูรณ์สำหรับผู้เริ่มต้นจะทำให้เขาตกใจเมื่อเขาตระหนักว่ามันเป็นสิ่งที่เรียกร้องให้ช่วยและเห็นได้ชัดเพราะ C.


8
#define VERY filename1 #define NOT filename2
Joe Z.

1
เปลี่ยน defs สำหรับคุณ ฉันเก็บไว้เหมือนกันในการประกาศฟังก์ชั่นสำหรับความสับสนมากขึ้น!

8
นอกจากนี้หากคุณ#define _ 1คุณสามารถสร้าง(;_;)ด้วย for-loop เพื่อทำให้มันดูเหมือนเป็นรอยยิ้ม
Joe Z.

5
#define LOL fcloseทำวันของฉัน
thwd

1
#define LOL fcloseซึ่งไม่เคยใช้เป็นงานชิ้นเอกของฉัน

28

ดวลจุดโทษ

ฉันชอบความเรียบง่ายของอันนี้

echo File1.txt > File2.txt

ทำงานได้อย่างถูกต้องหากFile1.txtมี "File1.text" ...


มีอะไรผิดปกติกับมัน?

4
@ user2509848 มันใส่ข้อความ "File1.txt" ลงไปFile2.txtไม่ใช่เนื้อหาจริงของFile1.txt
syb0rg

แต่นี้ไม่ได้จริงโกงคำถาม ...
jeremy

1
อาจจะต้องดวลจุดโทษเพราะไม่มีสิ่งใดทุบตีเฉพาะเจาะจง
Kaya

1
ทำให้เป็น ksh เขาจะต้องหาว่าจะไปที่ไหน

8

AutoHotKey

WinActivate, file1.txt
SendInput ^a^c
WinActivate, file2.txt
SendInput ^a^v^s

ก่อนอื่นคุณต้องเปิดไฟล์ใน notepad หรือแก้ไขข้อความอื่น ๆ ที่ทำให้ชื่อหน้าต่างเริ่มต้นด้วยชื่อไฟล์ จากนั้นจะคัดลอกเนื้อหาของ file1 ไปยังคลิปบอร์ด (ตัวอักษรโดยใช้ctrl+ c) และวางลงใน file2 เขียนทับสิ่งที่อยู่ในนั้นและบันทึก

แก้ไขปัญหา แต่ในแบบที่ไม่สะดวกและไร้ประโยชน์ การคัดลอกและวางด้วยตนเองอาจทำได้ง่ายกว่า


ยอดเยี่ยม ฉันสงสัยว่าครูจะคิดอย่างไร

6

ในฐานะที่ทุกคนรู้ว่า Perl เป็นสิ่งที่ดีมากสำหรับการจัดการไฟล์ รหัสนี้จะคัดลอกเนื้อหาของไฟล์หนึ่งไปยังอีกไฟล์หนึ่งและจะทำเช่นนั้นด้วยความซ้ำซ้อนพิเศษเพื่อการวัดที่ดี

#Good perl programs always start thusly
use strict;
use warnings;

my $input_file  = 'File1.txt';
my $output_file = 'File2.txt';
open(my $in, '<', $input_file) or die "Couldn't open $input_file $!";

my $full_line = "";
while (my $line = <$in>) {
    #Get each letter one at a time for safety, 
    foreach my $letter (split //, $line) {
        #You could and should add validity checks here
        $full_line .= $letter;

        #Get rid of output file if it exists!  You are replacing it with
        # new content so it's just wasting space.
        unlink $output_file if (-e $output_file);

        #Write data to new file
        open(my $out, '>', $output_file) or die "Couldn't open $output_file $!";
        print {$out} $full_line;
        close($out);
    }
}

เพื่อความปลอดภัยให้ทดสอบไฟล์เล็ก ๆ นี้ก่อน เมื่อคุณมั่นใจในความถูกต้องแล้วคุณสามารถนำไปผลิตต่อเพื่อใช้กับไฟล์ที่มีขนาดใหญ่มากโดยไม่ต้องกังวล


รหัสนี้ส่งออกครั้งเดียวทำลายไฟล์แล้วลองส่งออกอีกครั้งจากไฟล์เอาต์พุตแรกหรือไม่

3
การส่งผ่านครั้งแรกจะเขียนอักขระตัวแรกของไฟล์เก่าไปยังไฟล์ใหม่ ครั้งที่สองจะเป็นการลบไฟล์ใหม่และเขียนอักขระสองตัวแรกของไฟล์เก่าไปยังไฟล์ใหม่ ครั้งที่สามอักขระสามตัว ฯลฯ เป็นต้นไม่เพียง แต่จะซ้ำซ้อน แต่หากคอมพิวเตอร์ของคุณเกิดปัญหาคุณจะมีไฟล์บางส่วน!
dms

6

ค#

เพื่อให้บรรลุเป้าหมายนี้คุณต้องแน่ใจว่าได้ทำหลายสิ่ง:

  1. อ่านสตริงจากไฟล์
  2. ดาวน์โหลด Microsoft File IO และ String Extension สำหรับ Visual Studio
  3. ลบไวรัสออกจากสตริง ("sanitize")
  4. เขียนไฟล์ไปยังพา ธ
  5. ลบและโหลดแคชใหม่

นี่คือรหัส:

static void CopyTextFile(string path1, string path2)
    {
        try
        {
            FileStream fs = new FileStream(path1, FileMode.OpenOrCreate); //open the FTP connection to file
            byte[] file = new byte[fs.Length];
            fs.Read(file, 0, file.Length);
            string makeFileSafe = Encoding.UTF32.GetString(file);

            using (var cli = new WebClient())
            {
                cli.DownloadData(new Uri("Microsoft .NET File IO and String Extension Package")); //get MS package
            }

            fs.Dispose();

            File.Create(path2);
            StreamReader read = new StreamReader(path2);
            read.Dispose(); //create and read file for good luck

            var sb = new StringBuilder();
            foreach (char c in path1.ToCharArray())
            {
                sb.Append(c);
            }

            string virusFreeString = sb.ToString(); //remove viruses from string

            File.WriteAllText(path2, virusFreeString);
            File.Delete(path1);
            File.WriteAllText(path1, virusFreeString); //refresh cache
        }
        catch
        { 
            //Don't worry, exceptions can be safely ignored
        }
    }

6

ในสี่ขั้นตอนง่าย ๆ :

  1. พิมพ์ไฟล์ คุณสามารถใช้lprคำสั่งสำหรับสิ่งนี้
  2. ส่งงานพิมพ์ทางไปรษณีย์ไปยังบริการสแกน (คุณจะต้องส่งไปรษณีย์สำหรับสิ่งนี้)
  3. บริการสแกนจะสแกนงานพิมพ์และทำ OCR ให้คุณ
  4. ดาวน์โหลดไปยังตำแหน่งไฟล์ที่เหมาะสม

งานที่ดีสร้างคำตอบที่ไร้ประโยชน์!

RFC1149 นี้ใช้งานร่วมกันได้หรือไม่?
Mark K Cowan

@ user2509848 ฉันจะบอกว่างานที่ดีในการสร้างงานที่ไร้ประโยชน์แทนคำตอบ ...
Kiwy

4

ชวา

ผู้คนจำนวนมากพบว่ามีประโยชน์ในการพยายามใช้นิพจน์ปกติหรือประเมินสตริงเพื่อคัดลอกจากไฟล์หนึ่งไปยังอีกไฟล์หนึ่งอย่างไรก็ตามวิธีการเขียนโปรแกรมนั้นไม่เป็นระเบียบ ครั้งแรกที่เราใช้ Java เพราะ OOP ช่วยให้โค้ดของเราโปร่งใสยิ่งขึ้นและที่สองเราใช้อินเทอร์เฟซแบบอินเทอร์แอคทีฟเพื่อรับข้อมูลจากไฟล์แรกและเขียนลงในไฟล์ที่สอง

import java.util.*;
import java.io.*;

public class WritingFiles{



 public static void main(String []args){
    File tJIAgeOhbWbVYdo = new File("File1.txt");
    Scanner jLLPsdluuuXYKWO = new Scanner(tJIAgeOhbWbVYdo);
    while(jLLPsdluuuXYKWO.hasNext())
    {
        MyCSHomework.fzPouRoBCHjsMrR();
        jLLPsdluuuXYKWO.next();
    }
 }
}

class MyCSHomework{
    Scanner jsvLfexmmYeqdUB = new Scanner(System.in);
    Writer kJPlXlLZvJdjAOs = new BufferedWriter(new OutputStreamWriter( new  FileOutputStream("File2.txt"), "utf-8"));
    String quhJAyWHGEFQLGW = "plea";
   String LHpkhqOtkEAxrlN = "f the file";
   String SLGXUfzgLtaJcZe = "e nex";
   String HKSaPJlOlUCKLun = "se";
   String VWUNvlwAWvghVpR = " ";
   String cBFJgwxycJiIrby = "input th";
   String ukRIWQrTPfqAbYd = "t word o";
   String  CMGlDwZOdgWZNTN =   quhJAyWHGEFQLGW+HKSaPJlOlUCKLun+VWUNvlwAWvghVpR+cBFJgwxycJiIrby+SLGXUfzgLtaJcZe+ukRIWQrTPfqAbYd+LHpkhqOtkEAxrlN;
    public static void fzPouRoBCHjsMrR(){
        System.out.println(CMGlDwZOdgWZNTN);
        kJPlXlLZvJdjAOs.write(jsvLfexmmYeqdUB.next());
    }



}

ในทางทฤษฎี (ฉันไม่ได้ทดสอบ) สิ่งนี้ทำให้ผู้ใช้ป้อนเนื้อหาของไฟล์แรก (คำต่อคำ) ด้วยตนเองแล้วเขียนลงในไฟล์ที่สอง การตอบสนองนี้เป็นการเล่นที่คลุมเครือของคำถามเกี่ยวกับความหมายของคำว่า "การป้อนข้อความจากไฟล์เดียว" และชื่อตัวแปรบ้า (สร้างแบบสุ่ม) เป็นเพียงความสนุกพิเศษ


2
ฉันกำลังคิดที่จะทำสิ่งที่คล้ายกับสิ่งนี้ ... ไม่ใช่การตีความข้อความที่ป้อนเข้ามาอย่างผิด ๆ จากไฟล์หนึ่งแต่ทำตามวิธีของนักคณิตศาสตร์โดยบอกว่าฉันได้ลดปัญหาดังกล่าวลงไปแล้ว => การจัดการอินพุตหน้าจอ ไม่ได้คิดวิธีแก้ปัญหาที่ดีมาก่อน ...
Kiruse

3

ดวลจุดโทษ

อย่างที่ @Singetsu ชี้ให้เห็นเราต้องใช้เครื่องมือที่เหมาะสมสำหรับงานที่เหมาะสม การคัดลอกเนื้อหาจากไฟล์หนึ่งไปยังอีกไฟล์เป็นปัญหาเก่าและเครื่องมือที่ดีที่สุดสำหรับงานการจัดการไฟล์คือใช้เชลล์

หนึ่งในคำสั่งของเชลล์ที่โปรแกรมเมอร์ทุกคนมีที่จะทำความคุ้นเคยกับตัวเองเป็นส่วนtacคำสั่งที่ใช้ในการแทค k เนื้อหาของไฟล์ร่วมกันหนึ่งหลังจากที่อื่น ในกรณีพิเศษนี้เมื่อมีเพียงไฟล์เดียวเท่านั้นที่ผ่านเข้ามามันจะคายออกมาตามที่เป็นอยู่อีกครั้ง จากนั้นเราเพียงแค่เปลี่ยนเส้นทางผลลัพธ์ไปยังไฟล์ที่เหมาะสม:

tac inputfile.txt >outputfile.txt

ง่ายและตรงประเด็นไม่มีลูกเล่น!


2

Perl

มีแอนติไวรัส

#!/usr/bin/perl -w
use strict;
use warnings;

print "Copy the text of the file here: (warning: I can't copy files with newlines):\n";
my $content = <STDIN>;

print "\n\nPlease wait, removing viruses...";
my @array = split(//,"$content");
my @tarray;

foreach my $item (@array)
{
    if ($item ne "V" && $item ne "I" && $item ne "R" && $item ne "U" && $item ne "S")
    {
        push(@tarray, $item);
    }

}

print "\n\nNow copy this into the target file:\n";

foreach my $item (@tarray){ print "$item"};

น่าสนใจมากมันแค่แกล้งตรวจไวรัสหรือทำจริงๆเหรอ?

1
ไม่มันจะลบตัวอักษร V, I, R, U, S ออกจากไฟล์เท่านั้น
craftext

โอ้ เนื่องจากคุณพูดว่า "กำจัดไวรัส" บางทีคุณควรลบ 'E' ด้วย

2
นั่นเป็นเรื่องจริง แต่ถ้าคุณต้องการที่จะลบไวรัสจริงๆมีเป็นโมดูล CPAN ที่จะทำ: search.cpan.org/~converter/Mail-ClamAV-0.29
craftext

2

Windows Batch

(เพราะคุณต้องมีภาษาที่ "ตาย" นี้น่าจะ ;-)

@echo off
setlocal enabledelayedexpansion
for %%I in ('type %1') do set this=!this!%%I
echo !this!>%2 2>nul

คุณเรียกสิ่งนี้ว่าcopy.bat file1.txt file2.txt(หรือไฟล์อะไรก็ได้ที่คุณต้องการ)

ถ้าเพียง แต่มันจะทำให้เส้นแบ่ง ...


setlocal enabledelayedexpansionและใช้set thisline=!thisline!%%Iงานได้เฉพาะใน Windows CMD ใน DOS จะต้องใช้งานง่ายset thisline=%thisline%%%I
AMK

ฉันอัปเดตชื่อ
Isiah Meadows

2

Linq

ประสิทธิภาพไม่สำคัญความถูกต้องคือ การเขียนในสไตล์การใช้งานจะส่งผลให้รหัสมีความชัดเจนและผิดพลาดน้อยลง หากประสิทธิภาพไม่เป็นปัญหาบรรทัด ToArray () บรรทัดสุดท้ายสามารถละเว้นได้ มันเป็นการดีที่จะขี้เกียจอยู่ดี

public void CopyFile(string input, string output)
{
    Enumerable
        .Range(0, File.ReadAllBytes(input).Length)
        .Select(i => new { i = i, b = File.ReadAllBytes(input)[i] })
        .Select(ib => {
            using (var f = File.Open(output, ib.i == 0 ? FileMode.Create : FileMode.Append))
                f.Write(new byte[] { ib.b }, 0, 1);
            return ib; })
        .ToArray();
}

2

หูฟัง

มีห้องสมุดที่ย้ายไปยังภาษาท้องถิ่นขนาดเล็กหลายภาษา (Visualworks, Gemstone Squeak / Pharo, ... ) ชื่อXtreamsที่ทำให้งานนี้ง่ายกว่ามาก

FileStream จะง่ายเหมือน'foo' asFilename readingและ'bar' asFilename writingตัวอย่างใน Visualworks แต่เป็นภาษาเฉพาะ
ด้วยเหตุนี้ฉันแสดงให้เห็นถึงอัลกอริทึมที่มี Streams ภายในเป็นกลางทางภาษาแทน
ความคิดที่ดีคือการประมวลผลรหัสไบต์แต่ละลำดับเพื่อเพิ่ม:

| input |
input := 'Hello world' asByteArray reading.
^((ByteArray new writing)
    write: ((0 to: 255) inject: ByteArray new reading into: [:outputSoFar :code |
        | nextOutput |
        nextOutput := ByteArray new writing.
        ((input += 0; selecting: [:c | c <= code]) ending: code inclusive: true) slicing do: [:subStream |
            | positionable |
            positionable := subStream positioning.
            nextOutput write: (outputSoFar limiting: (positionable ending: code) rest size).
            nextOutput write: (positionable += 0; selecting: [:c | c = code])].
        nextOutput conclusion reading]);
    conclusion) asString

แน่นอนว่ามันอาจเป็นไปได้ที่จะประมวลผลตามลำดับแบบสุ่ม แต่ฉันกลัวว่าจะทำให้โค้ดมีขนาดกะทัดรัดเกินไป:

| input output |
input := 'Hello world' asByteArray reading.
output := ByteArray new writing.
(0 to: 255) asArray shuffled do: [:code |
        output += 0.
        (input += 0; ending: code inclusive: true) slicing do: [:subStream |
            | positionable |
            positionable := subStream positioning.
            output ++ (positionable += 0; rejecting: [:c | c = code]) rest size.
            output write: (positionable += 0; selecting: [:c | c = code])]].
^output conclusion asString

แก้ไข

อาโง่ฉันฉันไม่เห็นโซลูชัน log2:

| input output |
input := 'Hello world' asByteArray reading.
(output := ByteArray new writing) write: (input collecting: [:e | 0]).
output := (0 to: 7) asArray shuffled inject: output into: [:outputSoFar :bit |
        (ByteArray new writing)
            write:
                (((input += 0; collecting: [:e | e >> bit bitAnd: 1]) interleaving: outputSoFar conclusion reading) 
                    transforming: [ :in :out | out put: in get << bit + in get]);
            yourself].
^output conclusion asString

1

ทุบตี

บนเทอร์มินัล # 1 ด้วย IP, 192.168.1.2

nc -l 8080 | gpg -d > mydocument.docx

บนเทอร์มินัล # 2 ด้วย IP, 192.168.1.3

gpg -c mydocument.docx | nc 192.168.1.2 8080

วิธีนี้จะเข้ารหัสและส่งmydocument.docxใช้ncและgpgไปยังเทอร์มินัล # 1 คุณจะต้องพิมพ์รหัสผ่านบนเทอร์มินัล # 2 จากนั้นในเทอร์มินัล # 1


คุณสามารถทำเครื่องหมายรหัสได้หรือไม่?

ฉันเป็นมือใหม่, แต่ที่นี่ไป, nc -l 8080บอก netcat ให้ฟังพอร์ต 8080 อะไรที่ส่งไปที่ 192.168.1.2:8080 จะแสดงบน terminal # 1 ใน terminal # 2, gpg เข้ารหัส mydocument.docx และท่อที่ netcat nc 192.168.1.2 8080ส่ง mydocument.docx ที่เข้ารหัสแล้วไปยังเทอร์มินัล # 1 เมื่อ # 1 ได้รับมันจะทำการเข้ารหัสด้วยgpg -dและบันทึก i
Fews1932

1

C ++

นี่เป็นคำตอบของ Shingetsuแต่ฉันไม่สามารถต้านทานได้ มันใช้งานได้ดี แต่ไม่มีนักเรียนส่งให้ครู (หวังว่า) หากพวกเขายินดีที่จะวิเคราะห์รหัสพวกเขาจะสามารถแก้ไขปัญหาได้

#include <iostream>
#include <fstream>
#include <string>
using namespace std;
#define SOLVE ifs
#define IT >>
#define YOURSELF ofs

ifstream& operator IT(ifstream& ifs, ofstream& ofs) {
  string s;
  SOLVE IT s;
  YOURSELF << s;
  return ifs;
}

void output(ofstream& ofs, ifstream& ifs) {
  while (ifs) {
    SOLVE IT YOURSELF;
    ofs << ' ';
  }
}

int main() try {

  ofstream ofs("out.txt");
  ifstream ifs("in.txt");

  output(ofs, ifs);

  return 0;
}
catch (exception& e) {
  cerr << "Error: " << e.what() << endl;
  return 1;
}
catch (...) {
  cerr << "Unknown error.\n";
  return 2;
}

3
-1 (ไม่จริง) ไม่เพียงพอ JQuery ตรวจสอบข้อผิดพลาดมากเกินไป ฉันคิดว่าคุณปิดไฟล์ด้วย! gawd

ฉันรู้แล้วว่า JQuery กำลังจะมา!

1

หลาม

อินพุตข้อความจาก file1.txt และส่งออกไปยัง file2.txt

เสร็จสมบูรณ์และ "ทำงาน" ไม่มีใครพูดอะไรเกี่ยวกับการเขียนอินพุตเหมือนเดิม อักขระอินพุตทั้งหมดปรากฏขึ้นในเอาต์พุต "getchar" เป็นส่วนที่หมุนรอบ

from random import choice as getchar

f1 = open("file1.txt")
s1 = []
for line in f1:
    for char in line:
        s1.append(str(char))
s2 = ''
while len(s1) > 0:
    x = getchar(s1)
    s2 += x
    s1.remove(x)
f2 = open("file2.txt" , 'w')
f2.write(s2)

1

Mathematica, 44 ตัวอักษร

การดำเนินงาน

f = (BinaryWrite[#2, BinaryReadList@#]; Close@#2) &

การกระทำ

f["one file", "another"]

ตรวจสอบ

check = Import[StringJoin["!diff \"", #, "\" \"", #2, "\" 2>&1"], "Text"] &;
check["one file", "another"]


โทรลล์อยู่ที่ไหน ฉันไม่รู้ Mathematica

มันเป็นคำตอบที่น่าขันอย่างยิ่ง
Chris Degnen

โอ้ คุณอ่านกฎสำหรับการหมุนรหัสหรือไม่ codegolf.stackexchange.com/tags/code-trolling/info

ไม่ถูกต้อง แต่คำตอบนั้นไร้สาระเพราะฉันสามารถใช้ฟังก์ชันของMathematicaCopyFileได้
Chris Degnen

1

DELPHI / PASCAL (คัดลอกจาก f1.txt ไปยัง f2.txt)

program t;

{$APPTYPE CONSOLE}

uses
  classes;

var a : TStringlist;
begin
   a:=TStringlist.Create;
   a.LoadFromFile('e:\f1.txt');
   a.SaveToFile('e:\f2.txt');
   a.Free;
end.

1

MASM

แน่นอนว่าฉันไม่ใช่ผู้เชี่ยวชาญด้านการประกอบ แต่ด้านล่างเป็นตัวอย่างเล็ก ๆ ของฉัน:

include \masm32\include\masm32rt.inc

.code

start:
call main
inkey
exit

main proc
LOCAL hFile :DWORD  
LOCAL bwrt  :DWORD 
LOCAL cloc  :DWORD 
LOCAL flen  :DWORD  
LOCAL hMem  :DWORD  

.if rv(exist,"out.txt") != 0  
  test fdelete("out.txt"), eax 
.endif

mov hFile, fopen("source.txt")
mov flen, fsize(hFile)
mov hMem, alloc(flen)   
mov bwrt, fread(hFile,hMem,flen)  
fclose hFile   

invoke StripLF,hMem

mov hFile, fcreate("out.txt") 
mov bwrt, fwrite(hFile,hMem,flen)   
fclose hFile   

free hMem   

ret

main endp
end start

1

C ++

คุณสังเกตเห็นบิต "สมบูรณ์ฟังก์ชั่นการทำงาน" หรือไม่? อย่างไรก็ตามนี่คือคำตอบของฉัน:

#include <stdlib.h>
int main(void)
{
  system("echo < input > dest");
}

1

Lua

io.read()

text from one file and output it to another. Solution should be a complete, working function.ทำงานกับไฟล์การป้อนข้อมูลที่มี


2
ผู้คนหนึ่งวันจะมีคำตอบเหล่านี้เพียงพอ :( ฉันมีอยู่แล้ว
Vereos


1

#! / bin / ดวลจุดโทษ

contents=`< $1` ; echo "$contents" > $2

ดูสมเหตุสมผล แต่ไม่มีประสิทธิภาพหากไฟล์มีขนาดใหญ่

ปรับการทำงานกับไฟล์ ASCII ยกเว้นเมื่อแฟ้มใส่มี-n, หรือ-e -E(เพราะสิ่งเหล่านี้ถูกตีความว่าเป็นข้อโต้แย้งโดยecho)

ไม่สร้างเอาต์พุตที่ถูกต้องสำหรับไฟล์ไบนารีทั้งหมด (ส่วนใหญ่)

(การใช้printf "%s" "$contents" > outputภายใต้ใช้/bin/bashงานได้ดีขึ้นเล็กน้อย แต่ยังคงลดลงเป็น NULL ไบต์)

โอ้และแน่นอนว่ามันใช้ไม่ได้กับ filenames_containing_spaces แต่ไฟล์ดังกล่าวผิดกฎหมายภายใต้ UNIX% 20policy อยู่ดี

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.