2

私はCで書くことが少なく、問題があります。手始めに、私はテキストファイルから読み込んでいる行を2D配列に正しく入れていると確信しています。また、行を配列に入れようとすると問題が発生します。代入がキャストなしでポインタから整数になるという警告が表示されます。私はそれをcharにしたいのですが、割り当てたサイズよりも大きいため、SegFaultが発生するのはそのためだと思います。以下にコードを含めました。これはばかげた間違いだと思います。しばらくの間Cを使用していません。

#include <stdio.h>
FILE *fid;
char line[70];
char dna[66800][70];

main() {
    int counter = 0; 
    fid = fopen("dna.fna","r");
    while(fgets(line, sizeof(line), fid) != NULL){
        //fputs ( line, stdout ); 
    dna[counter][0] = line;   //Getting a Seg Fault here     
    counter++;
    }

    fclose(fid); 

} 
4

1 に答える 1

3

この場合の割り当ては、実際には次のようにコピーする必要があります。

strncpy(dna[counter], line, sizeof(line));

表示される警告はline、ポインタに減衰され、それをに割り当てようとすることによって発生しcharます。

また、counterそれが66800を超えないようにする必要があります。

于 2012-12-08T01:10:04.150 に答える