私はPython/Perlのバックグラウンドから来たCが新です。C:出力のためにFILEストリームの可変数を作成する方法は?
私は、複数の出力を作成し、出力の数は入力記述ファイル(基本的に記述ファイル内の行数は出力数です)から決定します。記述ファイルが出力名として使用されます。
私が現在持っているのは、記述ファイルのID列を配列に読み込み、ID番号を使用して同じ数のFILEストリームを開こうとすることです。
この問題を解決するには問題があります。私は、可変サイズの周りに得ることができますどのように
3 #include <stdio.h>
4 #include <time.h>
5 #include <zlib.h>
6 #include <string.h>
....
50 gzFile fi2,fi1,fr1;
51
52 fi2 = strcmp(argv[1],"-")? gzopen(argv[1],"r"):gzdopen(fileno(stdin),"r");
53 fi1 = strcmp(argv[2],"-")? gzopen(argv[2],"r"):gzdopen(fileno(stdin),"r");
54 FILE *samplelist = fopen(argv[5],"r");
55 fr1 = strcmp(argv[6],"-")? gzopen(argv[6],"r"):gzdopen(fileno(stdin),"r");
56 if (fi2 ==0 || fi1 ==0 || samplelist == 0 || fr1 == 0) {
57 fprintf(stderr,"[E:%s] failed to open the input file/stream.\n",__func__);
58 return 1;
59 }
60
61 char line[100];
62 char indexseq[10];
63 char sampleid[5];
64 char genome[15];
65 char seqmode[3];
66 char indexes[10][BUFSIZ];
67 int lidx = 0;
68 while (fgets(line, sizeof(line),samplelist)) {
69 //printf("%s",line);
70 sscanf(line,"%s\t%s\t%s\t%s\n",indexseq,sampleid,genome,seqmode);
71 //printf("%s\n",indexseq);
72 //printf("%s\n",sampleid);
73 strcpy(indexes[lidx],sampleid);
74 ++lidx;
75 strcpy(indexes[lidx],indexseq);
76 ++lidx;
77 }
78 char buf[30] = "";
79 int i;
80 for (i = 0; i <lidx; i+=2) {
81 snprintf(buf, sizeof buf, "%s%s%s%s", argv[3],"_I1_",indexes[i],".fastq");
82 fo_i1[i] = fopen(buf,"w");
83 snprintf(buf, sizeof buf, "%s%s%s%s", argv[3],"_R1_",indexes[i],".fastq");
84 fo_r1[i] = fopen(buf,"w");
85 }
:コードの一部を
error: variable-sized object may not be initialized
:私は今、この権利のようなものを持っており、それはライン82と84のメッセージを表示して、コンパイル時に文句を言いますFILEストリームを取得して動作させますか?特定の行を変更する方法に関する提案も歓迎します!
なぜ私は下の投票があることをお知らせください... – olala