[英]segmentation fault for array of file pointers
我正在嘗試使用從文本文件中讀取的輸入從多個音頻文件中讀取。 使用配體文件讀取文件。 我想知道 go 關於打開未知數量的音頻文件的最佳方法是什么。 我正在嘗試使用一組指針,但是我遇到了無法糾正的分段錯誤。
任何建議將不勝感激。
#include <stdio.h>
#include <stdlib.h>
#include <sndfile.h>
#define BUFFSIZE 1024
int main(int argc, char* argv[])
{
if(argc < 1)
{
printf("please enter a file to read instructions from");
exit(1);
}
//* INPUT USER INSTRUCTIONS FROM TEXT FILE *//
FILE *txtfile;
char filechar[40], chr;
int i,j,k;
int count_lines = 0;
txtfile = fopen(argv[1],"r");
if (txtfile == NULL)
{
printf("Error opening file....\n");
exit(0);
}
char** Track_Names = malloc(sizeof(char*) * 100);
float* start_time = malloc(sizeof(float*) * 100);
float* gain = malloc(sizeof(float*) * 100);
float* pan = malloc(sizeof(float*) * 100);
i = 0;
while(!feof(txtfile))
{
Track_Names[i] = malloc(sizeof(char) * 100);
fscanf(txtfile, "%s %f %f %f ", &Track_Names[i][0], &start_time[i], &gain[i], &pan[i]);
printf("\n name-%s time-%.2f gain-%.2f pan-%.2f \n", Track_Names[i], start_time[i], gain[i], pan[i]);
i++;
//* later use a pointer to store txt file values into arrays *\\
}
printf("%d\n", i);
int track_number = i;
//* Counting number of Files to process *//
printf("%s",Track_Names[1]);
fclose(txtfile);
SNDFILE *psf_in[i-1], *psf_out;
SF_INFO sfinfo_in[i-1], sfinfo_out;
float buffer[BUFFSIZE], samp[BUFFSIZE/i-1];
sf_count_t count;
printf("test");
///////////////* OPEN AUDIO FILES *\\\\\\\\\\\\
for (j=0; j <i; j++) ///Here is roughly where the segementation fault occurs//
{
psf_in[j] = sf_open(Track_Names[j], SFM_READ, &sfinfo_in[j]);
}
for (j = 0; j <=i; j++)
{
sf_close(psf_in[j]);
}
free(Track_Names);
free(start_time);
free(gain);
free(pan);
return (0);
}
SNDFILE *psf_in[i-1]
意味着該數組的最大有效索引是i - 2
。 然而,循環
for (j=0; j <i; j++) {
psf_in[j] = sf_open(Track_Names[j], SFM_READ, &sfinfo_in[j]);
}
訪問psf_in[i - 1]
。 所有的賭注都取消了。 將您的數組聲明為
SNDFILE *psf_in[i];
或調整循環邊界。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.