C-scanf를 건너 뜁니다 ( "% d"에서도).

사용자 3718365

나는 이것이 제대로 실행되지 않는 이유를 알아 내려고 노력하고 있습니다. 사용자로부터 4 개의 입력을 원하고 마지막에 계산을 실행합니다.

#include <stdio.h>
#include <math.h>

int main(){
    double amount; /* amount on deposit */
    double principal; /* what's the principal */
    double rate; /* annual interest rate */
    int year; /* year placeholder and no. of total years */
    int yearNo;

    printf("What is the principal? ");
    scanf("%d", &principal);
    printf("What is the rate (in decimal)? ");
    scanf(" .2%d", &rate);
    printf("What is the principal? ");
    scanf(" %d", &principal);
    printf("How many years? ");
    scanf(" %d\n", yearNo);


    printf("%4s%21s\n", "Year", "Amount on deposit");

    /* calculate the amount on deposit for each of ten years */
    for (year = 1; year <= yearNo; year++){
        amount = principal * pow(1.0 + rate, year);
        printf("%4d%21.2f\n", year, amount);
    }
    return 0;
}

원금과 요율을 적절하게 요구하지만 Principal에 대한 질문을 건너 뛰고 몇 년을 요구합니다. 그럼 그냥 거기 앉아 "유령"항목을 기다리고 있습니까?

나는 scanf()때릴 때 약간의 공백을 추가 한다고 읽었 enter지만 전에 공백 %d이 그것을 고칠 것이라고 생각 했습니까?

나는 또한 당신이 do { c=getchar(); } while ( c != '\n');각각을 추가 할 수 있다는 것을 scanf보았지만 그것은 프로그램을 충돌시키는 것 같습니다 (저도 int c = 0;처음에 추가 했습니다).

도움이나 아이디어에 감사드립니다!

편집하다:

잘못된 형식 지정자를 다음에서 변경할 때 :

scanf(" .2%d", &rate);

에:

scanf(" %d", &rate);

그런 다음 내 값을 입력 한 후 충돌이 발생합니다.

팍스 디아블로

.2%d유효한 형식 문자열 아닙니다 .

시작하려면 %먼저해야합니다. 또한 부동 소수점 값 뒤에있는 d경우 올바른 문자가 아닙니다 . 이는 정수 값입니다.

다음과 같은 것을 사용해야합니다 %f(너비 나 정밀도 수정자가 필요하지 않음).

또한 호출 중 하나에 포인터사용하지 않는 사소한 실수를 저질렀습니다 scanf.

scanf(" %d\n", yearNo);

이로 인해 충돌이 발생할 수 있으며 다음과 같이 변경해야합니다.

scanf(" %d\n", &yearNo);

그리고, 최종 제안, 그것은 이전에 공백 (또는 줄 바꿈 후)를 사용하는 완전히 불필요 %d하거나 %f형식 지정자의 가족. 스캐너는 둘 다 앞에있는 공백을 자동으로 건너 뜁니다.

따라서이 프로그램에서 필요한 유일한 두 가지 scanf형식 문자열 ( 는 부동 소수점, 복식 용)입니다."%d""%lf"flf

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

scanf를 건너 뜁니다 (?)

분류에서Dev

while 루프에서 "계속"을 사용하면 scanf ( "% d", var)를 건너 뜁니다.

분류에서Dev

cin.ignore ()를 사용한 후에도 C ++ cin을 건너 뜁니다.

분류에서Dev

여기 문서에서 읽기를 건너 뜁니다.

분류에서Dev

C의 배열에서 2 개의 숫자를 인쇄하고 2 개의 숫자를 건너 뜁니다.

분류에서Dev

Lotus Notes에서 로그인 페이지를 건너 뜁니다.

분류에서Dev

C # for 루프가 한 단계를 건너 뜁니다.

분류에서Dev

cin.ignore를 사용한 후에도 First & only cin은 건너 뜁니다.

분류에서Dev

dnsConfig는 GKE에서 건너 뜁니다.

분류에서Dev

C 기능을 건너 뜁니다.

분류에서Dev

파이프에서 정수 읽기는 C의 값을 건너 뜁니다.

분류에서Dev

c # XMLReader는 ReadElementContentAs를 사용한 후 노드를 건너 뜁니다.

분류에서Dev

Laravel은 이전 쿼리에서 찾은 경우 결과를 건너 뜁니다.

분류에서Dev

파일을 반복하고 BASH에서 n 개를 건너 뜁니다.

분류에서Dev

String.Strip이 두 번째 for 루프에서 문자를 건너 뜁니다.

분류에서Dev

경고를 관찰하면 for 루프 [R]에서 반복을 건너 뜁니다.

분류에서Dev

Microsoft Word에서 표 캡션 번호를 건너 뜁니다-디버깅 방법?

분류에서Dev

Dispatcher.BeginInvoke Prism에서 UI 컨트롤로드를 건너 뜁니다.

분류에서Dev

Java Iterator에서 단어의 'X'%를 임의로 건너 뜁니다.

분류에서Dev

SqlDataReader가 일부 결과 집합에서 결과를 건너 뜁니다.

분류에서Dev

Java 문자열에서 파이프 문자를 건너 뜁니다.

분류에서Dev

프로그램이 printf에서 멈추거나 printf를 건너 뜁니다.

분류에서Dev

열거 형에서 처음 두 요소를 건너 뜁니다-파이썬

분류에서Dev

문자열 반전-출력에서 마지막 문자를 건너 뜁니다.

분류에서Dev

if 문 vb.net에서 업데이트 쿼리를 건너 뜁니다.

분류에서Dev

SimpleDateFormat :: parse ()를 건너 뜁니다.

분류에서Dev

데이터베이스 ASP에서 데이터를 가져 오는 동안 테이블에서 행을 건너 뜁니다. net C #

분류에서Dev

Scanf가 % c 문자를 스캔하지 않지만 명령문을 건너 뜁니다. 그 이유는 무엇입니까?

분류에서Dev

스프링 상태 기 : PseudoStates에 대한 액세스를 건너 뜁니다

Related 관련 기사

  1. 1

    scanf를 건너 뜁니다 (?)

  2. 2

    while 루프에서 "계속"을 사용하면 scanf ( "% d", var)를 건너 뜁니다.

  3. 3

    cin.ignore ()를 사용한 후에도 C ++ cin을 건너 뜁니다.

  4. 4

    여기 문서에서 읽기를 건너 뜁니다.

  5. 5

    C의 배열에서 2 개의 숫자를 인쇄하고 2 개의 숫자를 건너 뜁니다.

  6. 6

    Lotus Notes에서 로그인 페이지를 건너 뜁니다.

  7. 7

    C # for 루프가 한 단계를 건너 뜁니다.

  8. 8

    cin.ignore를 사용한 후에도 First & only cin은 건너 뜁니다.

  9. 9

    dnsConfig는 GKE에서 건너 뜁니다.

  10. 10

    C 기능을 건너 뜁니다.

  11. 11

    파이프에서 정수 읽기는 C의 값을 건너 뜁니다.

  12. 12

    c # XMLReader는 ReadElementContentAs를 사용한 후 노드를 건너 뜁니다.

  13. 13

    Laravel은 이전 쿼리에서 찾은 경우 결과를 건너 뜁니다.

  14. 14

    파일을 반복하고 BASH에서 n 개를 건너 뜁니다.

  15. 15

    String.Strip이 두 번째 for 루프에서 문자를 건너 뜁니다.

  16. 16

    경고를 관찰하면 for 루프 [R]에서 반복을 건너 뜁니다.

  17. 17

    Microsoft Word에서 표 캡션 번호를 건너 뜁니다-디버깅 방법?

  18. 18

    Dispatcher.BeginInvoke Prism에서 UI 컨트롤로드를 건너 뜁니다.

  19. 19

    Java Iterator에서 단어의 'X'%를 임의로 건너 뜁니다.

  20. 20

    SqlDataReader가 일부 결과 집합에서 결과를 건너 뜁니다.

  21. 21

    Java 문자열에서 파이프 문자를 건너 뜁니다.

  22. 22

    프로그램이 printf에서 멈추거나 printf를 건너 뜁니다.

  23. 23

    열거 형에서 처음 두 요소를 건너 뜁니다-파이썬

  24. 24

    문자열 반전-출력에서 마지막 문자를 건너 뜁니다.

  25. 25

    if 문 vb.net에서 업데이트 쿼리를 건너 뜁니다.

  26. 26

    SimpleDateFormat :: parse ()를 건너 뜁니다.

  27. 27

    데이터베이스 ASP에서 데이터를 가져 오는 동안 테이블에서 행을 건너 뜁니다. net C #

  28. 28

    Scanf가 % c 문자를 스캔하지 않지만 명령문을 건너 뜁니다. 그 이유는 무엇입니까?

  29. 29

    스프링 상태 기 : PseudoStates에 대한 액세스를 건너 뜁니다

뜨겁다태그

보관