scanf来自函数的结构,从同一函数调用以扫描其他结构

时间:2016-04-24 16:48:27

标签: c function pointers scanf

我试图从函数中的文件输入中扫描结构,并使用其他函数打印它。

最终,我需要能够从我注释掉的代码中打印出相同的信息,但是从我在函数原型声明区域中列出的函数中执行此操作。我只是没有评论其中的2个,所以我可以尝试使用婴儿步骤来扫描和使用函数进行打印。功能本身位于最底层。

要完成scan_auto函数,我需要以某种方式扫描其他属于主结构的结构。我假设我需要从scan_auto调用函数scan_date和scan_tank,但我不确定如何正确地执行此操作。

这是我到目前为止的代码......

Mercury     Sable   99842   1   18  2001    5   30  1991    16  12.5
Mazda       Navajo  123961  2   20  1993    6   15  1993    19.3    16.7

我正在使用的文本文件(autos.txt)....

<script>
$(document).ready(function(){

    if(document.getElementById('blue').checked) {
  //Blue radio button is checked
        $("#jquery_jplayer_1").jPlayer({
            ready: function (event) {
                $(this).jPlayer("setMedia", {
                    mp3:"http://s6.voscast.com:10522/;stream/1"
                }).jPlayer("play"); // Attempts to Auto-Play the media;
            },
            play: function() { // To avoid both jPlayers playing together.
            $(this).jPlayer("pauseOthers");
            },
            swfPath: "js",
            supplied: "mp3",
            wmode: "window",
            smoothPlayBar: true,
            keyEnabled: true
            });
    }else if(document.getElementById('orange').checked) {
  //Orange radio button is checked
        $("#jquery_jplayer_1").jPlayer({
        ready: function (event) {
            $(this).jPlayer("setMedia", {
                mp3:"http://stream.tilos.hu/tilos_32.mp3"
            }).jPlayer("play"); // Attempts to Auto-Play the media;
        },
        play: function() { // To avoid both jPlayers playing together.
        $(this).jPlayer("pauseOthers");
        },
        swfPath: "js",
        supplied: "mp3",
        wmode: "window",
        smoothPlayBar: true,
        keyEnabled: true
        });
    }else if(document.getElementById('purple').checked) {
    //Purple radio button is checked
        $("#jquery_jplayer_1").jPlayer({
        ready: function (event) {
            $(this).jPlayer("setMedia", {
                mp3:"http://mr-stream.mediaconnect.hu/4738/mr2.mp3"
            }).jPlayer("play"); // Attempts to Auto-Play the media;
        },
        play: function() { // To avoid both jPlayers playing together.
        $(this).jPlayer("pauseOthers");
        },
        swfPath: "js",
        supplied: "mp3",
        wmode: "window",
        smoothPlayBar: true,
        keyEnabled: true
        });
    }
});
</script>

1 个答案:

答案 0 :(得分:1)

  但是我不确定如何正确地做到这一点。

你能详细说明你不确定的事吗?如果您不确定如何为struct的struct成员赋值,那么这个示例代码可能对您有所帮助?我将所有的东西结合在一起......

哦,我将您的*vehicle更改为*v,以使其更短更易于阅读。 此外,由于您正在访问结构指针的成员,为什么不使用v->xxx而不是(*v).xxx

更新1:你问如何单独进行。这是:

int scan_date(date_t *date, FILE *inp)
{
    int result = fscanf(
        inp,
        "%d%d%d",
        &(date->day),
        &(date->month),
        &(date->year));
    return (result == 3);
}


int scan_tank(tank_t *tank, FILE *inp)
{
    int result = fscanf(
        inp,
        "%lf%lf",
        &(tank->capacity),
        &(tank->current));

    return (result == 2);

}

int scan_auto(auto_t *v, FILE *inp)
{
    int result = fscanf(
        inp,
        "%s%s%d",
        v->make,
        v->model,
        &(v->odometer));

    result += scan_date(&(v->purch), inp);
    result += scan_date(&(v->manuf), inp);
    result += scan_tank(&(v->tank), inp);

    return (result == 11); // return 0 if true
}