일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 데이터 통신
- 자바 개념
- 파이썬 첼린지
- 파이썬 챌린지
- ubuntu
- 파이썬
- 자바
- C
- 자바 기초
- 오라클
- 백준
- Database
- Rust
- OS
- 백준 러스트
- 러스트 예제
- Operating System
- Python
- 파이썬 알고리즘
- Reversing
- 운영체제
- java
- data communication
- 데이터베이스
- 러스트
- Python challenge
- 알고리즘
- 러스트 프로그래밍 공식 가이드
- 우분투
- 오라클DB
Archives
- Today
- Total
IT’s Portfolio
[Rust] How to study Rust? - "Copycat" (6) 본문
728x90
반응형
구조체로 예약 단어 및 길이 정의 후 입력 텍스트 파일의 각 줄에 나타나는 단어들에 대하여 "줄번호-위치-단어-해당 길이" 출력(예약되지 않은 단어가 나타나면 "Undefined word" 메시지 출력 후 무시)
입력 파일
소스 코드
use std::{fs, io::Read, error::Error, process};
struct Optab<'a> {
name: &'a str,
len: i32,
}
impl<'a> Optab<'a> {
fn new(name: &'a str, len: i32) -> Optab<'a> {
Optab { name, len }
}
}
fn read_file() -> Result<String, Box<dyn Error>> {
let mut f = fs::File::open("command.s")?;
let mut buf = String::new();
f.read_to_string(&mut buf)?;
Ok(buf)
}
fn word_checking(contents: String) {
let mut location = 0;
let mut l = 1;
let wordtab: Vec<Optab> = vec![
Optab::new("LDA", 3), Optab::new("STA", 4), Optab::new("ADD", 5),
Optab::new("TIX", 2), Optab::new("CMP", 6)
];
for word in contents.lines() {
let mut checker = true;
for x in wordtab.iter() {
if x.name == word {
println!(
"{l:>2}, {location:02X}, {}, {:#02}",
x.name, x.len
);
location+=x.len;
l+=1;
checker = false;
break;
}
}
if checker == true {
println!(" Undefined word");
}
}
}
fn main() {
let contents = read_file().unwrap_or_else(
|err| {
eprintln!("Error!\n{err}");
process::exit(1);
}
);
word_checking(contents);
}
결과
1, 00, STA, 04
2, 04, LDA, 03
3, 07, TIX, 02
4, 09, LDA, 03
5, 0C, STA, 04
6, 10, CMP, 06
7, 16, LDA, 03
Undefined word
8, 19, ADD, 05
9, 1E, TIX, 02
10, 20, CMP, 06
11, 26, ADD, 05
출처
728x90
반응형
'Development Study > Rust' 카테고리의 다른 글
[System] The Elements of Computing System - 2 (1) | 2023.11.04 |
---|---|
[System] The Elements of Computing System - 1 (1) | 2023.10.31 |
[Rust] How to study Rust? - "Copycat" (5) (0) | 2023.09.23 |
[Rust] How to study Rust? - "Copycat" (4) (0) | 2023.09.23 |
[Rust] How to study Rust? - "Copycat" (3) (0) | 2023.08.28 |
Comments