2014-10-20 2 views
-2

이것은 내 C++ 코드입니다.어떻게 플로트 번호를 표시합니까?

#include <iostream> 
#include <string.h> 
#include <ctype.h> 
#include <stdio.h> 

int main() 
{ 
    FILE *f1; 
    char c; 
    int num[100], tokenvalue = 0, i = 0, j = 0; 
    f1 = fopen("test.txt", "r"); 
    while ((c = getc(f1)) != EOF) 
    { 
     if (isdigit(c)) 
     { 
      tokenvalue = c - '0'; 
      c = getc(f1); 
      while (isdigit(c)) 
      { 
       tokenvalue = tokenvalue * 10 + (c - '0'); 
       c = getc(f1); 
      } 
      num[i++] = tokenvalue; 
      ungetc(c, f1); 
     } 
    } 

    printf("\nThe no's in the program are\n"); 
    for (j = 0; j < i; j++) 
    { 
     printf("%d", num[j]); 
     printf("\n"); 
    } 
    int z; 
    scanf("%d", &z); 
    return 0; 
} 

내 TEST.TXT 입력 파일 가지고

Name: Md. Jakir Hossin 
Age: 23 

Name: Shafi Mahmud 
Age: 18.5 

Name: Asmaul Husna 
Age: 28 

Name: Md. Jahirul Haque 
Age: 30.4 

출력!

[출력] [1]

이 프로그램은 어느 INT 번호를 보여 주지만하지 않는다 float 번호를 표시합니다. 플로트 번호는 어떻게 표시합니까?

+0

형식 지정자로 사용자 '% f' –

+4

왜 stdio를 C++ 코드에 사용하고 있습니까 (태그 지정)? 그것은 C 코드 –

+0

@EdHeal 아직 차이를 모르거나 C++가 C의 상위 버전이라고 생각하는 수백 명이 있습니다. D –

답변

-1

C++ :

cout << num[j] << endl; 

또는

는 C :

printf("%f", 1.23f); 

수 또는 변수 인 경우

printf("%f \n", num[j]); 
+0

타입 변환을하거나 float로 선언해야합니다. –

+4

하지만 선언문은'int num [100]'이므로 C 버전은 작동하지 않으며 실제로 정의되지 않은 동작을 호출합니다. –

0

는 부동 소수점 수를 표시하려면이 잘 이루어집니다 not float, 캐스트가 작동합니다 :

int num[100]; 
.... 
printf("%f", (float) num[j]); 

주 : 가변 값이 doubleprintf() 변환 등의 값처럼 ... 기능에 전달있다.

그러나 OP의 진짜 문제는 숫자를 파일에서 일부 부동 소수점 값으로 읽어야한다는 것입니다.

// int num[100]; 
float num[100]; 
... 
// Age: 18.5 
char buf[50]; 
if (fgets(buf, sizeof buf, f1) == NULL) Handle_IOError_or_EOF(); 
if (sscanf(buf, "Age:%f", buf, &num[j]) != 1) Handle_UnexpectedData(); 
printf("Age: %.1f\n", num[j]); 
관련 문제