0
를 문자열을 읽을 수 없습니다 :는 다음 코드에서 매트릭스로
atnames = new char[natoms];
xyzs = new double*[natoms];
for(int iat=0;iat<natoms;iat++)
{
int idum1;
xyzs[iat] = new double[3];
for(int ii = 0; ii<3; ii++)
{
xyzs[iat][ii] = 0.0;
}
getline(finp, tline);
sscanf(tline.c_str(), "%c(%i) %f %f %f ATOM", &atnames[iat], &idum1, &xyzs[iat][0], &xyzs[iat][1], &xyzs[iat][2]);
}
for(int iat=0; iat<natoms; iat++)
{
cout << atnames[iat] << iat+1 << ":" << xyzs[iat][0] << " " << xyzs[iat][1] << " " << xyzs[iat][2] << endl;
}
내가 선을 읽으려고하고있다 : 나는 값을 출력 할 때
O(1) 1.23799 0.00000 0.00000 ATOM
N(2) -0.75911 1.08623 0.00000 ATOM
C(3) 0.00000 -0.00000 0.00000 ATOM
H(4) -1.75297 0.97208 0.03384 ATOM
H(5) -0.30916 1.98585 -0.01442 ATOM
H(6) -0.52646 -0.95018 0.03999 ATOM
를, 내가 얻을 :
O1:5.27341e-315 0 0
N2:1.58536e-314 5.26712e-315 0
C3:0 0 0
H4:1.59047e-314 5.26123e-315 5.05975e-315
H5:1.58004e-314 5.3044e-315 1.56185e-314
H6:1.58343e-314 1.58694e-314 5.06791e-315
그래서 처음에는 분명히 처음으로 char
을 읽었지만 부동 소수점 숫자 값을 저장하지 않았습니다. 어레이 xyz
에 바르게 삽입하십시오. 나는 이것이 참조/역 참조 문제 인 것처럼 느낀다. 그러나 내가 잘못하고있는 것에 관해서는 명확하지 않다.
&xyzs[iat][0]
대신 xyzs[iat][0]
값을 직접 읽으려고하면 seg-fault가 발생합니다.