похоже, что fscanf () для текста, а не для двоичного. Спасибо Пабло. Исправленная версия выглядит так:
int main(int argc,char *argv[]){
FILE* file = popen("arecord -q -t raw -r 8000 --format S32_LE -D plughw:0,0 -d 4", "r");
int32_t buffer[100];
FILE *fp;
fp=fopen("./record.dat", "w+");
int i,k,s;
for (i=0; i<100; i++){
fread(&buffer, sizeof(int32_t), 100, file);
for (k=0; k<100; k++){
s = k + 100 * i;
fprintf(fp,"%d\t%d\n", s , buffer[k] ) ;
}
}
pclose(file);
fclose(fp) ;
FILE *p = popen(GNUPLOT,"w");
fprintf(p, "set xrange [3000:3400]\n");
fprintf(p,"plot 'record.dat' lt rgb 'red' title 'raw' \n");
fclose(p);
return 0;
}
, который возвращает красивый сюжет:
волна