我正在编写一个将输出写入文件的程序.如果此文件不存在,我想创建它.
目前,我在调用open时使用以下标志:O_WRONLY | O_CREATE
但是,当这创建文件时,它不会给我任何写入它的权限...
我如何使用open以便在不存在的情况下创建文件,但是在需要时会创建具有必要权限的文件?
谢谢!
我正在绘制几个从窗口高度和宽度键入的形状(例如圆圈).由于窗口始终以给定大小开始,因此它们被正确绘制,但是当窗口调整大小时,它会使宽高比混乱.
无论窗口大小如何,我如何正确绘制形状?
我正在读的关于Erlang的书在它的后面有练习,一个是重新创建列表:追加功能.
我可以简单地使用++运算符来做这个,但这不是很慢吗?我认为练习的重点是使用我编写的列表操作来完成.
到目前为止,我能想到的唯一方法是执行以下操作:
concat([], _, Results)->
Results;
concat(_, [], Results)->
Results;
concat([Ah|At],B,Results) ->
concat(At,B,[Ah|Results]).
Run Code Online (Sandbox Code Playgroud)
但我知道这是不正确的......
关于如何做到这一点的任何建议?
编辑:澄清问题,这是一个示例输入和输出:
输入:[[1,2,3],[],[4,5],[6]]输出:[1,2,3,4,5,6]
工作一段时间后,我想出了这个代码:
append([A|[B|[T|[]]]]) ->
append([A++B|T]);
append([H|T]) ->
H++T.
Run Code Online (Sandbox Code Playgroud)
但是,这仅适用于列表大小为3的情况.如何修改此值以使其适用于任意给定数量的随机大小的列表?
我有以下正则表达式来消除空格,制表符和新行: [^ \n\t]
但是,我想为某些其他字符扩展它,例如>和<.
我尝试过[^ \n\t<>],现在效果很好,但我希望表达式不匹配,如果<或>前面有一个\.
我试过了[^ \n\t[^\\]<[^\\]>],但这没用.
我正在编写一个Erlang函数,它将每个偶数打印到给定参数.
到目前为止,我已经用这样的守卫编写了这个函数:
printEven(I,N) when I < N ->
if
I rem 2 == 0 -> io:format("~p~n",[I]), printEven(I+1,N);
I rem 2 == 1 -> printEven(I+1,N)
end;
printEven(I,N) ->
io:format("Done").
Run Code Online (Sandbox Code Playgroud)
我真的很想让最后一个案例自动退出,而不必在函数中打印任何东西.我试过删除它,但随后发生错误,因为递归完成后,会抛出错误.
我怎样才能做到这一点?在erlang中是否有类似'pass'或'yield'的关键字?
我已经在互联网上搜索了连接到任一数据库的驱动程序,并且我看到的所有项目已经死了很长时间,看起来不完整,或者没有足够好的文档可以在不阅读所有源代码的情况下使用.
有没有人使用Erlang之前与MySQL或PostgreSQL交谈,你使用了什么类型的包来做到这一点?
我创建了一个管道,并使用dup2()将流1和2(stdout和stderr)覆盖到这些管道中.
现在我希望使用fprintf写入流1或2,但我的程序似乎没有在管道的另一端接收任何内容.我尝试过使用printf(),但我不确定这是默认写入stdout还是流1.如果它写入流1,我想它在我的代码更深处的问题.
基本上我问,给定一个表示流的int,我如何获得适合在fprintf()中使用的FILE*?
我最近一直在阅读关于Erlang的内容,以及由于使用迭代循环的困难,尾部递归如此频繁使用.
递归的这种高使用是否会降低它的速度,所有函数调用以及它们对堆栈的影响是什么?或者尾部递归否定了大部分内容?
我正在使用LPC2132 ARM芯片开发程序.但是,我的程序比芯片上的空间大.
如何将芯片连接到某种外部存储器芯片以保存其他可执行代码?这可能吗?如果没有,人们在芯片空间耗尽时通常会做些什么?