C 中的 2D 数组和警告:赋值从指针生成整数而不进行强制转换



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

在这种情况下,赋值实际上应该是一个副本,如下所示:

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

您收到的警告是由line衰减到指针并尝试将其分配给char引起的。

您还必须确保counter永远不会超过 66800。

相关内容

  • 没有找到相关文章

最新更新