2

我不经常用 C 语言编写,遇到了一些麻烦。对于初学者,我想我确信我将从文本文件中读取的行正确地放入二维数组中。当我尝试将线放入数组时,我也遇到了问题。我收到一个警告,即赋值从没有强制转换的指针中生成整数。我希望它是一个字符,我认为这就是我得到 Seg Fault 的原因,因为它大于我分配的大小。我在下面包含了我的代码。我敢打赌这是一个愚蠢的错误,我有一段时间没有使用 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 回答