我不经常用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。