I wrote this program in C ve ayrıca in erlangBunu yazmanın D yolu nedir?
Ben Bir arkadaşım da D yazdım ama wrote it differently
adımları basit D'de yeniden yazmak çalıştı uygular. Sözdekod:
While not end of file:
X = Read ulong from file and covert to little endian
Y = Read X bytes from file into ubyte array
subtract 1 from each byte in Y
save Y as an ogg file
My D girişimi:
import std.file, std.stdio, std.bitmanip, std.conv, core.stdc.stdio : fread;
void main(){
auto file = File("./sounds.pk", "r+");
auto fp = file.getFP();
ulong x;
int i,cnt;
while(fread(&x, 8, 1, fp)){
writeln("start");
x=swapEndian(x);
writeln(x," ",cnt++,"\n");
ubyte[] arr= new ubyte[x];
fread(&arr, x, 1, fp);
for(i=0;i<x;i++) arr[i]-=1;
std.file.write("/home/fold/wak_oggs/"~to!string(cnt)~".ogg",arr);
}
}
Ben sadece arr üzerinde fread kullanamazsınız görünüyor. sizeof 16'dır ve çıkarma kısmına ulaştığımda segmentasyon hatası verir. Otomatik olarak statik bir dizi tahsis edemiyorum ya da en azından nasıl olduğunu bilmiyorum. Ayrıca malloc kullanamıyorum çünkü bayttan geçerken boşluğu atmaya çalıştığımda bana hata veriyor. Bunu nasıl yazarsın, ya da daha iyisini ne yapabilirim?
emin '& arr' dizinin ilk elemana puan musunuz? – hvd