C 语言求思路!!急急急!! - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 I 生成的内容
z742364692
V2EX    程序员

C 语言求思路!!急急急!!

  •  
  •   z742364692 2015-11-18 22:07:09 +08:00 3234 次点击
    这是一个创建于 3614 天前的主题,其中的信息可能已经有所发展或是发生改变。
    设计一个程序实现对多个源文件读取并且用 gcc 编译运行看是否出错和结果是否正确

    求思路,怎么实现对多个文件的读取,如何调用 gcc ,并且链接 php 前台传送文件。

    谢谢大神,老师偷懒,其实就是想做一个小程序,然后把所有人的期末作业放到一个文件夹里进行批处理,然后打分。。。。。。

    还关照我说,把 php 部分也做了,设计漂亮点

    求大神指点思路,周末就要成品,小弟先谢过

    万能的v2ex
    21 条回复    2015-11-19 17:07:26 +08:00
    LaughingMeMe
        1
    LaughingMeMe  
       2015-11-18 22:11:19 +08:00
    这不是 ACM 的测题么- -
    Valyrian
        2
    Valyrian  
       2015-11-18 22:11:36 +08:00
    execve?
    mahone3297
        3
    mahone3297  
       2015-11-18 22:12:11 +08:00
    思路:
    貌似可以文件上传到 1 个地方,这里用 php ,然后用 gcc 编译到一个地方,然后用 shell 或者 php ( exec 函数),传入你期望的入参,得到返回值,校验程序是否有问题

    我觉得,关键点,在于要做好一个沙盒,不然。。。这其实就相当于一个 oj 吧。。。
    z742364692
        4
    z742364692  
    OP
       2015-11-18 22:12:47 +08:00
    @LaughingMeMe 哦?什么东东,有链接吗,我参考参考,主要是没啥思路,书到用时方恨少
    @Valyrian 这是?
    z742364692
        5
    z742364692  
    OP
       2015-11-18 22:14:04 +08:00
    @mahone3297 后台 c 如何对多个文件依次操作呢(假设这些文件全部传到了一个目录下)?小弟不懂
    feuvan
        6
    feuvan  
       2015-11-18 22:15:03 +08:00   1
    这不是 oj 吗?
    php 的话记得配置好 disable_classes disable_functions 们。。
    LaughingMeMe
        7
    LaughingMeMe  
       2015-11-18 22:16:15 +08:00   1
    acm.hdu.edu.cn....and other else..?
    virusdefender
        8
    virusdefender  
       2015-11-18 22:17:57 +08:00   1
    hustoj php 的 oj

    https://github.com/QingdaoU/OnlineJudge python 的 oj
    wizardoz
        9
    wizardoz  
       2015-11-18 22:22:16 +08:00
    不会帮顶
    northisland
        10
    northisland  
       2015-11-18 22:24:29 +08:00
    多个文件读取,,,顺序读取,还是并行读取?

    C 调用 bash ?只知道 popen 这个函数

    PHP 是最好的语言
    Kirscheis
        11
    Kirscheis  
       2015-11-18 22:24:39 +08:00 via iPhone   3
    告诉你们老师去找个现成的开源 OJ 就可以了。
    https://github.com/mjnaderi/Sharif-Judge
    https://github.com/51isoft/bnuoj
    没事造什么轮子。
    z742364692
        12
    z742364692  
    OP
       2015-11-18 22:40:09 +08:00
    @virusdefender 有没有 c 的,这个做出来,我就直接过了,哈哈
    htfy96
        13
    htfy96  
       2015-11-18 22:44:32 +08:00
    @Kirscheis 看了下第一个 OJ 的后端貌似禁 fork 之类的居然是靠强制#define fork error 然后屏蔽#undef 来实现的……这样随便就能绕过去吧……
    z742364692
        14
    z742364692  
    OP
       2015-11-18 22:46:54 +08:00
    @virusdefender 其实只要知道怎么搞定读多个文件和调用 gcc 问题就解决大半了
    @northisland 顺序的
    hqs123
        15
    hqs123  
       2015-11-18 22:50:11 +08:00
    这个我用 java 也可以实现.
    z742364692
        16
    z742364692  
    OP
       2015-11-18 22:55:05 +08:00
    @hqs123 java 不会,学的 c 和汇编
    adadada
        17
    adadada  
       2015-11-18 23:48:10 +08:00
    一定要用 C 吗?批量编译的部分写个脚本应该就可以搞定了吧?
    oska874
        18
    oska874  
       2015-11-19 00:58:30 +08:00 via Android
    顺序读入多个文件->调用 shell 分别编译->调用 shell 执行程序->调用 shell 比较结果和答案是否一样
    twoconk
        19
    twoconk  
       2015-11-19 08:22:53 +08:00 via Android
    楼上好多正解
    harry890829
        20
    harry890829  
       2015-11-19 09:15:35 +08:00
    Linux C 应该会用 makefile 把,你文件上传之后,根据文件名,生成一个 makefile ,然后执行 shell 命令,“ make &> XXX ”这个 shell 会把 make 的结果写入到一个文件中,然后你读取这个文件,查看是否有 error ,就可以啦
    hitmanx
        21
    hitmanx  
       2015-11-19 17:07:26 +08:00
    这个用脚本语言应该会很简单,用 C\C++的话,执行 shell 指令可以用 std::system(),例子在这里 http://en.cppreference.com/w/cpp/utility/program/system
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5152 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 54ms UTC 09:32 PVG 17:32 LAX 02:32 JFK 05:32
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86