2012-12-08 37 views
2

我经常不写C语言,并且遇到了一些麻烦。对于初学者,我认为我确信我正在从文本文件中将正在阅读的行正确地放入2D数组中。另外,当我尝试将该行放入数组时,我遇到了问题。我得到一个警告,指出这个赋值使得指针中的整数没有转换。我希望它是一个字符,我认为这就是为什么我得到一个Seg Fault,因为它大于我分配的大小。我在下面列出了我的代码。我敢打赌,这是一个愚蠢的错误,我还没有用C在一段时间谢谢!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); 

} 

回答

3

在这种情况下,分配实际上应该是一个拷贝,就像这样:

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

你正在被line导致警告而衰变成一个指针,并试图赋值给一个char

您还必须确定counter永远不会超过66800.

相关问题