0
다음 코드 줄은 문자열, int 및 쉼표로 구분 된 두 개의 double을 읽고 변수에 저장해야합니다.fscanf()는 다른 컴퓨터에서 다르게 작동합니다.
fscanf(f,"%[^,],%d,%Lf,%Lf",name,&id,&east, &north);
내 Visual Studio 2010 컴파일러에서 작동하며 올바른 값을 읽습니다. 저는 세 개의 숫자에 대해 임의의 값을 가지고 있지만 문자열에 맞는 값을 가진 다른 컴퓨터에서 프로그램을 실행했습니다.
무엇이 될 수 있습니까?
'% Lf'변환 지정자는'long double'을위한 것이지,'double'을위한 것이 아니고,'% lf'은'double'을위한 것입니다. –
'% Lf'은'long double'을위한 것이고'double'은 평범하지 않습니다. Microsoft 컴파일러에서 long double은 double과 같은 크기이지만 다른 컴파일러에는 확장 된 long double double이 있습니다. ID가 실제로 길이가 길지 않고 32 비트/64 비트 불일치가 없다면 int에 무엇이 잘못되었는지 전혀 알 수 없습니다. –
'double '을 읽기 위해'% lf'을 사용하십시오. – ouah