I wrote this program in C और भी in erlangइसे लिखने का तरीका क्या है?
मैं डी में फिर से लिखने की कोशिश की एक दोस्त ने भी विकास में लिखा था लेकिन wrote it differently
चरणों सरल हैं अभ्यास करने के लिए। स्यूडोकोड:
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
मेरे डी प्रयास:
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);
}
}
ऐसा लगता है मैं सिर्फ आगमन पर fread उपयोग नहीं कर सकते। आकार 16 है और जब मैं घटाना भाग प्राप्त करता हूं तो यह सेगमेंटेशन गलती देता है। मैं एक स्थिर सरणी ऑटो आवंटित नहीं कर सकता, या कम से कम मुझे नहीं पता कि कैसे। मैं malloc का उपयोग भी नहीं कर सकता क्योंकि जब मैं बाइट्स के माध्यम से लूप करता हूं तो जब मैं शून्य को कास्ट करने की कोशिश करता हूं तो यह मुझे त्रुटियां देता है। आप इसे कैसे लिखेंगे, या, मैं बेहतर क्या कर सकता हूं?
क्या आप वाकई 'और arr' सरणी के पहले तत्व को अंक हैं? – hvd