1
0
Fork 0
mirror of https://codeberg.org/ziglings/exercises.git synced 2025-06-08 01:57:02 +09:00

106 & 107

This commit is contained in:
Alan CHUNG 2024-03-27 16:40:24 +08:00
parent 69bc9a0723
commit 223fc79e44
5 changed files with 100 additions and 20 deletions

View file

@ -1,28 +1,24 @@
--- exercises/106_files.zig
+++ answers/106_files.zig
@@ -35,9 +35,9 @@ pub fn main() !void {
--- exercises/106_files.zig 2024-03-27 16:36:44.593077000 +0800
+++ answers/106_files.zig 2024-03-27 16:36:31.548155100 +0800
@@ -35,7 +35,7 @@
// by doing nothing
//
// we want to catch error.PathAlreadyExists and do nothing
- ??? => {
- ???;
- },
+ error.PathAlreadyExists => {
+ return;
+ },
- ??? => {},
+ error.PathAlreadyExists => {},
// if is any other unexpected error we just propagate it through
else => return e,
};
@@ -46,7 +46,7 @@ pub fn main() !void {
@@ -44,7 +44,7 @@
// wait a minute
// opening a directory might fail!
// what should we do here?
- const output_dir: std.fs.Dir = cwd.openDir("output", .{});
+ const output_dir: std.fs.Dir = try cwd.openDir("output", .{});
- var output_dir: std.fs.Dir = cwd.openDir("output", .{});
+ var output_dir: std.fs.Dir = try cwd.openDir("output", .{});
defer output_dir.close();
// we try to open the file `zigling.txt`,
// and propagate the error up if there are any errors
@@ -56,7 +56,7 @@ pub fn main() !void {
@@ -55,7 +55,7 @@
// but here we are not yet done writing to the file
// if only there are a keyword in zig that
// allow you "defer" code execute to the end of scope...

View file

@ -0,0 +1,26 @@
--- exercises/107_files2.zig 2024-03-27 16:36:56.733062700 +0800
+++ answers/107_files2.zig 2024-03-27 16:36:52.894505100 +0800
@@ -33,7 +33,7 @@
// initalize an array of u8 with all letter 'A'.
// we need to pick a size of the array, 64 seems like a good number.
// fix the initalization below
- var content = ['A']*64;
+ var content = [_]u8{'A'} ** 64;
// this should print out : `AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA`
std.debug.print("{s}\n", .{content});
@@ -41,12 +41,12 @@
// can you go here to find a way to read the content ?
// https://ziglang.org/documentation/master/std/#std.fs.File
// hint: you might find two answer that are both vaild in this case
- const byte_read = zig_read_the_file_or_i_will_fight_you(&content);
+ const byte_read = try file.read(&content);
// Woah, too screamy, I know you're excited for zigling time but tone it down a bit
// Can you print only what we read from the file ?
std.debug.print("Successfully Read {} byte: {s}\n", .{
byte_read,
- content, // change this line only
+ content[0..byte_read], // change this line only
});
}