Fixed length records: Difference between revisions
Content added Content deleted
m (Minor edit to C++ code) |
(Added Rust solution) |
||
Line 1,172: | Line 1,172: | ||
{{out|output|text= when using the default input file:}} |
{{out|output|text= when using the default input file:}} |
||
{{out}} |
{{out}} |
||
<pre> |
|||
8.........7.........6.........5.........4.........3.........2.........1...1 eniL |
|||
2 eniL |
|||
3 eniL |
|||
4 eniL |
|||
6 eniL |
|||
7 eniL |
|||
............................................................8 enil detnednI |
|||
NIGRAM TR 9 eniL |
|||
</pre> |
|||
=={{header|Rust}}== |
|||
<lang rust>use std::io::prelude::*; |
|||
use std::io::{BufReader, BufWriter}; |
|||
use std::fs::File; |
|||
fn reverse_file(input_filename: &str, output_filename: &str, |
|||
record_len: usize) -> std::io::Result<()> { |
|||
let mut input = BufReader::new(File::open(input_filename)?); |
|||
let mut output = BufWriter::new(File::create(output_filename)?); |
|||
let mut buffer = vec![0; record_len]; |
|||
while input.read(&mut buffer)? == record_len { |
|||
buffer.reverse(); |
|||
output.write_all(&buffer)?; |
|||
} |
|||
output.flush()?; |
|||
Ok(()) |
|||
} |
|||
fn main() { |
|||
match reverse_file("infile.dat", "outfile.dat", 80) { |
|||
Ok(()) => {} |
|||
Err(error) => eprintln!("I/O error: {}", error) |
|||
} |
|||
}</lang> |
|||
{{out}} |
|||
After converting with dd: |
|||
<pre> |
<pre> |
||
8.........7.........6.........5.........4.........3.........2.........1...1 eniL |
8.........7.........6.........5.........4.........3.........2.........1...1 eniL |