2014-12-12 6 views
0

그래서 fscanf를 사용하여 txt 파일에서 읽는 중입니다.구조체를 사용하여 구조체에 쓰기

for (int i = 0; i < totalLines; ++i) 
{ 
    fscanf(fp,"%s %s %f %f[^\n]", &cp[i].name, &cp[i].animal, &cp[i].coordinates.lat, &cp[i].coordinates.lng); 
    printf("Name: %s\nAnimal: %s\nLat: %.6f\nLong: %.6f\n\n", cp[i].name, cp[i].animal, cp[i].coordinates.lat, cp[i].coordinates.lng); 
} 

문제/2 인쇄 복식 LNG이며 위도가 지정되지 않는 최 구조체 부재 또는 변수를 설정하지 않고있다. 이 작업을 수행하는 가장 좋은 방법은 무엇입니까? 나는 올바른 길을 가고 있는가? 나는 (이중) 그것을 오류를 통해 던지려고했다. 어떤 아이디어?

UPDATE

나는 그것이 있어야 메신저는 여전히에 0 값을 얻는 방법에 코드를 업데이트 한

. 왜 어떤 아이디어?

+0

내가 가진 내 코드를 업데이트하고 여전히 운이 없다. 그 두 배처럼 솔기가 거기에 있기를 원하지 않습니다. – Definity

+1

구조체 선언을 표시합니다. –

+0

'& cp [i] .name, & cp [i] .animal,'cp [i] .name, cp [i] .animal,' –

답변

1

입니다 :

/* Structure Holding Coordinates */ 
typedef struct location               
{                    
    double lat;                
    double longt;               
}location_t;                  


typedef struct geo                
{                    
    char name[64];                
    char animal[64];                
    location_t loc;               
} geo_t;                   

는 다음과 같이 독서 할 수있다 :

geo_t arr[NO_ENTRIES];  /* NO_ENTRIES is total lines in file */              
for(i = 0; i< NO_ENTRIES; i++)            
    fscanf(fp, " %s %s %lf %lf", arr[i].name, arr[i].animal, &arr[i].loc.lat, &arr[i].loc.longt); 

printf("After Reading\n\n\n");            
for(i = 0; i< NO_ENTRIES; i++)            
    printf(" %s %s %f %f\n", arr[i].name, arr[i].animal, arr[i].loc.lat, arr[i].loc.longt); 

는 여기를 참조하십시오 http://ideone.com/99dmvL

0

대신 double 값으로 %s을 사용하십시오.

fscanf(fp,"%s %s %f %f", cp[i].name, cp[i].animal, &cp[i].coordinates.lat, &cp[i].coordinates.lng); 

또한 printf에 오류가 있습니다. 난 당신이 할 제안 :

printf("Name: %s\nAnimal: %s\nLat: %f\nLong: %f\n\n", cp[i].name, cp[i].animal, cp[i].coordinates.lat, cp[i].coordinates.lng); 
  • "%lf"를 사용하지 마십시오. 변수는 복식이므로 "%f"을 사용해야합니다.
  • printf 호출에서 필요할 경우 "%.5f"과 같은 형식 지정자를 사용하십시오. printf가 소수점 이하 5 자리를 출력하도록 지시한다.

또한 fscanf & fprintf 문서를 참조 할 수 있습니다.

+0

도와 주셔서 감사합니다. 여전히 0.0000 내가 그들을 printf. – Definity

+0

구조체 선언이 문제가되기를 바랍니다. 구조체 선언을 여기에 게시 할 수 있습니까? –

0

printf에서와 같이 두 번 사용하려면 %lf을 사용하십시오. 그래서에 코드를 변경합니다

fscanf(fp,"%s %s %lf %lf", cp[i].name, cp[i].animal, &cp[i].coordinates.lat, &cp[i].coordinates.lng); 
0

유 긴 더블 유 두 배 값을 예를 스캔하는 경우 u는 대신 % s 님의 %의 LF를 사용해야 값을 읽으려는으로 : fscanf (FP, "%의 LF를"& double_value);

0

부동 소수점 제어 문자열을 사용하여 값을 가져와야합니다. 문자열 제어 문자열이 아닙니다. 다음과 같이 구조를 고려

fscanf(fp,"%s %s %lf %lf", cp[i].name, cp[i].animal, &cp[i].coordinates.lat, &cp[i].coordinates.lng); 
관련 문제