2013-02-22 3 views
0

atof를 사용하여 문자열을 double로 변환했습니다. 프로그램은 eof에 도달 할 때까지 하나의 문자열로 하나의 문자열을 csv 파일에서 읽습니다. 특정 문자열에서만 액세스 위반 문제가 발생하기 전에 이러한 문자열이 문제가되지 않습니다. 무엇이 문제 일 수 있습니까? 0x3500005 : 0x406e64b1 위치를 읽는 액세스 위반. 그 일이 atof에서 일어났습니다. 이 프로그램은atof로 문자열을 double로 변환 할 때 액세스 위반이 발생했습니다.

strtod이 문자의 PTR에 endptr 비교 이중

로 값을 읽어 사용을 고려

while (!myReadFile.eof()) 
     { 
      //myReadFile>>cstr; 
      getline (myReadFile, cstr, ','); 
      //removedString = RemoveChars(cstr, removedchar); 
      const char * c = cstr.c_str(); 
      //cout << k << "\n"; 
      if(k == 1200) 
       k = k; 
      temp[j++][k] = atof(c); 
      if(i < 3) 
      { 
       if((j = j % 2) == 0) 
        k++; 
      } 
      else 
      { 
       if((j = j % 3) == 0) 
        k++; 
      } 
     } 
+0

'j' 또는'k'가 너무 큽니다. – cnicutar

+0

@cnicutar 나는 또한 그렇게 믿는다.하지만 'k'는 1200에,'j'는 0에서 2로, 'temp'의 경계에는 뭔가 틀린 것이 틀림 없습니다. –

+0

@Aniket 그 중 하나를 경계하는 코드는 없습니다. – cnicutar

답변

0

아래에 첨부되어 있습니다. 동일하면 카운터를 증가시키지 마십시오.

관련 문제