Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C ALSA编程-“snd控制卡信息()”问题_C - Fatal编程技术网

C ALSA编程-“snd控制卡信息()”问题

C ALSA编程-“snd控制卡信息()”问题,c,C,我正试图编写一个简单的C程序来列出Linux上可用的ALSA声卡。我的问题是使用一个简单的printf()语句进行一些调试。这是代码的一部分 gchar *card_name; const gchar *card_id; gint card; gint open; gint get_info; gint card_number; gint err; snd_ctl_t *handle; snd_ctl_card_info_t *info; card = -1; for (;;) {

我正试图编写一个简单的C程序来列出Linux上可用的ALSA声卡。我的问题是使用一个简单的printf()语句进行一些调试。这是代码的一部分

gchar *card_name;
const gchar *card_id;
gint card;
gint open;
gint get_info;
gint card_number;
gint err;
snd_ctl_t *handle;
snd_ctl_card_info_t *info;

card = -1;

for (;;)
{   
    gchar device[20];

    /* Scans a list of alsa devices. With 'card' 
    at '-1' it will search for the first device. */ 
    if ((err = snd_card_next (&card)) < 0)
    {               
        g_print ("%s.\n", snd_strerror (err));

        return -1;
    }

    /* If 'card' reaches '-1' after finding devices, there
    are no more devices. */
    if (card < 0)
    {
        g_print ("\nNo more sound cards.\n\n");

        return 1;
    }

    /* Setup 'device' with proper syntax needed by other functions. */
    sprintf (device, "hw:%d", card);

    g_print ("%s\n", device);  /* debug */

    /* Open device to probe for hardware info here */       
    if ((err = snd_ctl_open (&handle, device, 0)) < 0)
    {
        g_print ("%s.\n", snd_strerror (err));

        return -1;
    }

    /* Get hardware info after opening device */
    if ((err = snd_ctl_card_info (handle, info)) < 0)
    {
        g_print ("%s.\n", snd_strerror (err));

        return -1;
    }

    /* Card hardware info extracted from 'info'. */
    //card_name = snd_ctl_card_info_get_name (info);
    card_id = snd_ctl_card_info_get_id (info);
    card_number = snd_ctl_card_info_get_card (info);

    g_print ("Card Number:%d Card Name:[%s]\n", card_number, card_id);

    snd_ctl_close (handle);
    snd_ctl_card_info_clear (info);
}
gchar*卡名;
const gchar*卡id;
金卡;
金特开放;
我得不到你的信息;
gint卡号;
金特错误;
snd_ctl_t*手柄;
snd控制卡信息*info;
卡片=-1;
对于(;;)
{   
gchar装置[20];
/*扫描alsa设备列表。使用“卡”
在“-1”处,它将搜索第一个设备。*/
如果((err=snd_card_next(&card))<0)
{               
g_print(“%s.\n”,snd_strerror(err));
返回-1;
}
/*如果“卡”在找到设备后到达“-1”,则
没有更多的设备*/
如果(卡<0)
{
g_print(“\n没有更多的声卡。\n\n”);
返回1;
}
/*使用其他功能所需的正确语法设置“设备”*/
sprintf(设备,“硬件:%d”,卡);
g_print(“%s\n”,设备);/*调试*/
/*在此处打开设备以探测硬件信息*/
如果((err=snd_ctl_open(&handle,device,0))<0)
{
g_print(“%s.\n”,snd_strerror(err));
返回-1;
}
/*打开设备后获取硬件信息*/
如果((err=snd_ctl_card_info(句柄,信息))<0)
{
g_print(“%s.\n”,snd_strerror(err));
返回-1;
}
/*从“信息”中提取的卡硬件信息*/
//卡片名称=snd\U ctl\U card\U info\U get\U name(信息);
card\U id=snd\U ctl\U card\U info\U get\U id(信息);
卡号=snd\U ctl\U card\U info\U get\U card(信息);
g_print(“卡号:%d卡号:[%s]\n”,卡号,卡号);
snd_控制关闭(手柄);
snd控制卡信息清除(信息);
}

用于在未注释掉时进行调试的
g_print()
语句编译并运行良好。当我注释掉用于调试的
g_print()
语句时,它会编译,但运行时seg会出错。我遗漏了什么吗?

“当我注释掉g_print()”哪一个?旁边有
/*debug*/