2012-12-08 2 views
2

자주 C로 쓰지 않고 약간의 문제가 있습니다. 처음에는 텍스트 파일에서 2D 배열로 올바르게 읽는 선을 넣을 것이라고 확신합니다. 또한 배열에 선을 넣을 때 문제가 발생합니다. 나는 할당이 캐스팅없이 포인터에서 정수를 만든다는 경고를 받는다. 나는 그것이 숯이되기를 원한다. 그리고 나는 그것이 내가 할당 한 크기보다 크기 때문에 Seg 결함을 얻고있는 이유라고 생각한다. 나는 아래에 나의 코드를 포함시켰다. 나는 이것이 어리석은 실수라고 생각한다. 나는 잠시 동안 C를 사용하지 않았다.C에서 2D 배열과 경고 : 할당은 캐스팅없이 포인터에서 정수를 만듭니다.

#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을 초과하지 않아야합니다.

관련 문제