Hello everyone,
JS/TS and Golang developer here
I’m learning zig
and while making some basic code, i struggle to understand why it does what it does.
In a function, I have a origin
parameter which is a [] const u8
, I wanted to loop over a directory to list and gather the path of all the files.
Example: I give ./folder
and should see ./folder/file1.png
, ./folder/file2.png
and so on
Pretty simple
const dir = try std.fs.cwd().openDir(origin, std.fs.Dir.OpenDirOptions{
.iterate = true
});
var files = std.ArrayList([]const u8).init(std.heap.page_allocator);
var it = dir.iterate();
var buffer: [256]u8 = undefined;
while (try it.next()) |item| {
switch (item.kind) {
std.fs.Dir.Entry.Kind.File => {
var cmd = std.fmt.bufPrint(&buffer, "{s}/{s}", .{ origin, item.name }) catch "error";
std.debug.print("item.name: {s}\n", .{ cmd });
try files.append(cmd);
},
else => std.debug.print("{s}: {s}\n", .{ item.kind, item.name }),
}
}
std.debug.print("data {s}\n", .{ files.items });
The output is disturbing
The print of the files during the loop are ok and exactly what I was searching for
BUT the print of the items in the list show the same ./sprite9.png
and some ./sprite9.pngg
which show it “replaced” the string of another like swapping ./sprite10.png
but with the latest string ./sprite9.png
keeping the last “g”
I have no idea what it does this
I can’t wait to have more docs and more examples to understand how to code correctly in zig
, it’s a fascinating language
Thanks for taking the time to read my post
item.name: ./sprite1.png
item.name: ./sprite10.png
item.name: ./sprite11.png
item.name: ./sprite12.png
item.name: ./sprite13.png
item.name: ./sprite14.png
item.name: ./sprite15.png
item.name: ./sprite16.png
item.name: ./sprite17.png
item.name: ./sprite18.png
item.name: ./sprite19.png
item.name: ./sprite2.png
item.name: ./sprite20.png
item.name: ./sprite21.png
item.name: ./sprite22.png
item.name: ./sprite23.png
item.name: ./sprite24.png
item.name: ./sprite25.png
item.name: ./sprite3.png
item.name: ./sprite4.png
item.name: ./sprite5.png
item.name: ./sprite6.png
item.name: ./sprite7.png
item.name: ./sprite8.png
item.name: ./sprite9.png
data { ./sprite9.png, ./sprite9.pngg, ./sprite9.pngg, ./sprite9.pngg, ./sprite9.pngg, ./sprite9.pngg, ./sprite9.pngg, ./sprite9.pngg, ./sprite9.pngg, ./sprite9.pngg, ./sprite9.pngg, ./sprite9.png, ./sprite9.pngg, ./sprite9.pngg, ./sprite9.pngg, ./sprite9.pngg, ./sprite9.pngg, ./sprite9.pngg, ./sprite9.png, ./sprite9.png, ./sprite9.png, ./sprite9.png, ./sprite9.png, ./sprite9.png, ./sprite9.png }