AzLearn

تمرين إعادة البناء

File Line Counter

أعد كتابة عداد ملف يحسب الأسطر والكلمات والمحارف.

rust ~12 دقيقة مبتدئ
أعد بناء الكود Rebuild

هذا هو الكود. اكتبه بنفسك.

الكود المرجعي
use std::env;
use std::fs::File;
use std::io::{self, BufRead, BufReader};

fn main() -> io::Result<()> {
    let path = match env::args().nth(1) {
        Some(path) => path,
        None => {
            println!("Usage: line_counter <file>");
            return Ok(());
        }
    };

    let file = File::open(&path)?;
    let reader = BufReader::new(file);

    let mut lines = 0usize;
    let mut words = 0usize;
    let mut characters = 0usize;

    // مر على كل سطر — Walk through each line
    for line_result in reader.lines() {
        let line = line_result?;
        lines += 1;
        words += line.split_whitespace().count();
        characters += line.chars().count();
    }

    println!("File: {path}");
    println!("Lines: {lines}");
    println!("Words: {words}");
    println!("Characters: {characters}");

    Ok(())
}
اكتب هنا