চ্যালেঞ্জ:
একটি ফাইল থেকে পাঠ্য ইনপুট করুন এবং এটিকে অন্যটিতে আউটপুট দিন। সমাধান একটি সম্পূর্ণ, কার্যকরী ফাংশন হওয়া উচিত।
দ্রষ্টব্য: এটি একটি কোড-ট্রোলিং প্রশ্ন। দয়া করে প্রশ্ন এবং / অথবা উত্তরগুলি গুরুত্ব সহকারে নেবেন না। আরও তথ্য এখানে ।
চ্যালেঞ্জ:
একটি ফাইল থেকে পাঠ্য ইনপুট করুন এবং এটিকে অন্যটিতে আউটপুট দিন। সমাধান একটি সম্পূর্ণ, কার্যকরী ফাংশন হওয়া উচিত।
দ্রষ্টব্য: এটি একটি কোড-ট্রোলিং প্রশ্ন। দয়া করে প্রশ্ন এবং / অথবা উত্তরগুলি গুরুত্ব সহকারে নেবেন না। আরও তথ্য এখানে ।
উত্তর:
একাধিক প্রোগ্রামিং ল্যাঙ্গুয়েজ থাকার পুরো বিষয়টি হল, আপনাকে কাজের জন্য সঠিক সরঞ্জামটি ব্যবহার করা দরকার।
এই ক্ষেত্রে, আমরা একটি ফাইল থেকে অন্য ফাইলটিতে বাইটগুলি অনুলিপি করতে চাই।
যদিও আমরা বাশ বা রুবীর মতো অভিনব কিছু ব্যবহার করতে পারি বা এএসএম এর ক্ষমতায় পড়তে পারি, আমাদের দ্রুত, ভাল কিছু এবং বিট সহ ভাল কিছু দরকার।
সুস্পষ্ট পছন্দটি হ'ল সিটি করার সহজ
উপায়টি এরকম হবে:
#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_;
}
এটি দুষ্কর কারণ এটি সাইগউইনের মতো জিনিসগুলিতে আবর্জনা পড়বে, কোনও শিক্ষানবিশের জন্য পুরোপুরি চাইনিজ, যখন সে বুঝতে পারে যে এটি সাহায্যের জন্য একটি আহ্বান জানায় এবং স্পষ্টতই, কারণ সি।
#define VERY filename1
#define NOT filename2
#define _ 1
, আপনি (;_;)
এটি স্মাইলির মতো দেখানোর জন্য, লুপটি দিয়ে তৈরি করতে পারেন।
#define LOL fclose
আমার দিন
WinActivate, file1.txt
SendInput ^a^c
WinActivate, file2.txt
SendInput ^a^v^s
আপনাকে প্রথমে ফাইলগুলি নোটপ্যাডে বা অন্য কোনও পাঠ্য সম্পাদককে খুলতে হবে যা উইন্ডোর নামগুলি ফাইলের নাম দিয়ে শুরু করে। তারপরে এটি ফাইল 1 এর বিষয়বস্তুগুলি ক্লিপবোর্ডে অনুলিপি করে (আক্ষরিকভাবে, ctrl+ ব্যবহার করে c) এবং এটি ফাইল 2 এ আটকানো হয়, এটিতে বর্তমানে যে কোনও কিছু ওভাররাইট করে এবং সংরক্ষণ করে।
সমস্যাটি সমাধান করে তবে খুব অসুবিধাজনক এবং বেশ অব্যর্থ ফ্যাশনে। সহজেই অনুলিপি করে অনুলিপি করা এবং আটকানো সহজ।
যেহেতু সবাই জানে, পার্ল ফাইলগুলি পরিচালনা করার জন্য খুব ভাল। এই কোডটি একটি ফাইলের লিখিত সামগ্রী অন্যটিতে অনুলিপি করবে এবং ভাল পরিমাপের জন্য অতিরিক্ত অতিরিক্ত অতিরিক্ত কাজ করে তা করবে।
#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);
}
}
নিরাপদ থাকতে, প্রথমে একটি ছোট ফাইলের মধ্যে এটি পরীক্ষা করে দেখুন। একবার আপনি এর নির্ভুলতার বিষয়ে নিশ্চিত হয়ে গেলে আপনি এটিকে উদ্বেগ ছাড়াই খুব বড় ফাইলগুলিতে ব্যবহারের জন্য প্রযোজনায় রাখতে পারেন।
সি শার্প
এটি অর্জন করতে, আপনাকে অবশ্যই বেশ কয়েকটি জিনিস নিশ্চিত করতে হবে:
কোডটি এখানে:
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
}
}
চারটি সহজ পদক্ষেপে:
lpr
জন্য কমান্ডটি ব্যবহার করতে পারেন ।প্রচুর লোকেরা নিয়মিত মত প্রকাশের চেষ্টা করতে বা স্ট্রিংগুলি একটি ফাইল থেকে অন্য ফাইলটিতে অনুলিপি করার জন্য মূল্যায়ণ করতে দরকারী মনে করেন, তবে প্রোগ্রামিংয়ের পদ্ধতিটি খালি। প্রথমে আমরা জাভা ব্যবহার করি কারণ ওওপি আমাদের কোডে আরও স্বচ্ছতার অনুমতি দেয় এবং দ্বিতীয়ত আমরা প্রথম ফাইলটি থেকে ডেটা প্রাপ্ত করতে এবং এটি দ্বিতীয়টিতে লিখতে একটি ইন্টারেক্টিভ ইন্টারফেস ব্যবহার করি।
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());
}
}
তত্ত্বের ক্ষেত্রে (আমি এটি পরীক্ষা করিনি) এটি ব্যবহারকারীকে ম্যানুয়ালি প্রথম ফাইলের (প্রতিটি শব্দ দ্বারা) ইনপুট করে তোলে এবং তারপরে এটি দ্বিতীয় ফাইলে লেখায়। এই প্রতিক্রিয়াটি "একটি ফাইলের ইনপুট পাঠ্য" এবং পাগল ভেরিয়েবলের নামগুলি (এলোমেলোভাবে উত্পন্ন) কেবল কিছু অতিরিক্ত মজাদার জন্য এই প্রশ্নের দ্ব্যর্থতার উপর একটি নাটক।
@ শিঙ্গেতসু বলেছিলেন যে, একজনকে সঠিক কাজের জন্য সঠিক সরঞ্জামটি ব্যবহার করতে হবে। সামগ্রীটি এক ফাইল থেকে অন্য ফাইলটিতে অনুলিপি করা একটি পুরানো সমস্যা এবং এই জাতীয় ফাইল পরিচালনার জন্য সেরা সরঞ্জামটি শেল ব্যবহার করা।
প্রতিটি প্রোগ্রামার তাদের নিজের সাথে পরিচিত হওয়ার জন্য একটি শেল কমান্ড হ'ল সাধারণ tac
কমান্ড , একের পর এক ফাইলের বিষয়বস্তু ট্যাক করতে ব্যবহৃত হয় । এটির একটি বিশেষ কেস হিসাবে, যখন কেবলমাত্র একটি ফাইল এতে পাস করা হয় কেবল তখন যেমন হয় তেমনি থুতু হয়। এরপরে আমরা কেবল উপযুক্ত ফাইলটিতে আউটপুটটিকে পুনঃনির্দেশ করি:
tac inputfile.txt >outputfile.txt
সহজ এবং টু দ্য পয়েন্ট, কোনও কৌশল নয়!
অ্যান্টিভাইরাস অন্তর্ভুক্ত।
#!/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"};
(কারণ আপনার কাছে এই "মৃত" ভাষা অনুমান করা উচিত ;-)
@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
শুধুমাত্র উইন্ডোজ সিএমডিতে কাজ করে। ডস-এ অবশ্যই সাধারণ কাজ করা উচিতset thisline=%thisline%%%I
দক্ষতা গুরুত্বপূর্ণ নয়, নির্ভুলতা হয়। কার্যকরী শৈলীতে লেখার ফলে আরও পরিষ্কার এবং কম ত্রুটি-প্রবণ কোডের ফলাফল হয়। যদি পারফরম্যান্সটি কোনও সমস্যা হিসাবে দেখা দেয় তবে শেষের 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();
}
স্বল্প কথা
এক্সট্রিমস নামে একাধিক স্মলটাল্ক উপভাষাগুলি (ভিজ্যুয়াল ওয়ার্কস, রত্নপাথর স্কোয়াক / ফারো, ...) এর কাছে এখনও একটি লাইব্রেরি রয়েছে যা এই কাজটিকে আরও সহজ করে তোলে।
ফাইল স্ট্রিমটি ভিজ্যুয়াল ওয়ার্কগুলিতে 'foo' asFilename reading
এবং 'bar' asFilename writing
উদাহরণ হিসাবে সহজ হবে তবে ডায়ালাই নির্দিষ্ট specific
এই কারণে আমি পরিবর্তে ডায়ালেক্ট নিরপেক্ষ অভ্যন্তরীণ স্ট্রিমগুলির সাথে অ্যালগরিদমটি প্রদর্শন করি।
ক্রমবর্ধমান ক্রমে প্রতিটি বাইট কোডটি প্রক্রিয়া করা ভাল ধারণা হতে পারে:
| 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
সম্পাদনা
আহ আমাকে বোকা, আমি লগ 2 সমাধানটি দেখিনি:
| 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 আইপি সহ 192.168.1.2
nc -l 8080 | gpg -d > mydocument.docx
টার্মিনাল # 2 এ আইপি, 192.168.1.3
gpg -c mydocument.docx | nc 192.168.1.2 8080
এই এনক্রিপ্ট করবে এবং সেন্ড mydocument.docx
ব্যবহার nc
এবং gpg
, ওভার টার্মিনাল # 1 এ নিয়ে আপনি টার্মিনাল # 1 তারপর টার্মিনাল # 2 পাসওয়ার্ড টাইপ করতে থাকবে
এটি শিংগেসুর উত্তরের ভিত্তিতে কিছুটা হলেও আমি প্রতিহত করতে পারি নি। এটি সম্পূর্ণরূপে কার্যকরী, তবে কোনও শিক্ষার্থী এটি তাদের শিক্ষকের কাছে জমা দেবে না (আশা করি)। যদি তারা কোডটি বিশ্লেষণ করতে রাজি হন তবে তারা তাদের সমস্যা সমাধান করতে সক্ষম হবেন:
#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;
}
File1.txt থেকে পাঠ্যকে ইনপুট করে ফাইল2.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)
বাস্তবায়ন
f = (BinaryWrite[#2, BinaryReadList@#]; Close@#2) &
ফাঁসি
f["one file", "another"]
চেক
check = Import[StringJoin["!diff \"", #, "\" \"", #2, "\" 2>&1"], "Text"] &;
check["one file", "another"]
CopyFile
ফাংশন।
আমি অবশ্যই কোনও সংসদ বিশেষজ্ঞ নই, তবে নীচে আমার ছোট স্নিপেটটি রয়েছে:
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
io.read()
ধারণকারী একটি ইনপুট ফাইল দিয়ে চালান text from one file and output it to another. Solution should be a complete, working function.
।
পিএইচপি
function copyFile($input, $output)
{
return file_put_contents($output, file_get_contents($input));
}
contents=`< $1` ; echo "$contents" > $2
যুক্তিযুক্ত মনে হচ্ছে, তবে ফাইলটি বড় হলে অকার্যকর।
ইনপুট ফাইলটি থাকা ছাড়া -n
, -e
বা এসসিআইআই ফাইলগুলিতে সূক্ষ্ম কাজ করে -E
। (কারণ এগুলি দ্বারা আর্গুমেন্ট হিসাবে ব্যাখ্যা করা হয় echo
))
সমস্ত (সর্বাধিক) বাইনারি ফাইলগুলির জন্য সঠিক আউটপুট উত্পাদন করে না।
(এর printf "%s" "$contents" > output
অধীনে ব্যবহার করা /bin/bash
কিছুটা ভাল কাজ করে তবে এটি এখনও ন্যূ বাইট বাদ দেয়।)
ওহ এবং অবশ্যই এটি ফাইলের নাম_সামান্য_স্পেসেসের জন্য কাজ করে না। তবে এই জাতীয় ফাইলগুলি ইউনিক্স% 20 পলিসির অধীনে অবৈধ।