【发布时间】:2014-03-06 17:19:54
【问题描述】:
所以我很难理解并让我的代码工作。
我有那个代码:
int main(int argc, char *argv[])
{
while(1){
// Buffer containing one sample (left and right, both 16 bit).
int16_t samples[2];
unsigned cbBuffer=sizeof(samples); // size in bytes of
// Read one sample from input
int got=read(STDIN_FILENO, samples, cbBuffer);
if(got<0){
fprintf(stderr, "%s: Read from stdin failed, error=%s.", argv[0], strerror(errno));
exit(1);
}else if(got==0){
break; // end of file
}else if(got!=cbBuffer){
fprintf(stderr, "%s: Did not receive expected number of bytes.\n", argv[0]);
exit(1);
}
// Copy one sample to output
int done=write(STDOUT_FILENO, samples, cbBuffer);
if(done<0){
fprintf(stderr, "%s: Write to stdout failed, error=%s.", argv[0], strerror(errno));
exit(1);
}else if(done!=cbBuffer){
fprintf(stderr, "%s: Could not read requested number of bytes from stream.\n", argv[0]);
}
}
return 0;
}
我用那个在终端上调用:
./mp3_file_src.sh bn9th_m4.mp3 | ./passthrough > /dev/null
我想修改代码,以便他可以取一个数字 n 并处理 n 个样本(所以我在我的代码中得到 samples[2*n])。如果没有为可执行文件提供参数,则使用默认值。
如果我理解正确,我可以验证如果argc>2 是否给出了参数?但是我似乎无法理解如何获取该参数并将其传递到我的代码中。
有什么想法吗?
【问题讨论】:
-
嗯,基本上你从 argc 变量中得到参数的数量,从 argv 数组中得到参数的值。您必须循环遍历 argv 数组直到 argc 次。