2017-05-24 8 views
0

zu arbeiten, wenn ich 10 in den Eingang betreten, kommt das Programm wie folgt aus:Programm nicht richtig

Enter item number: 10

Enter unit price: Enter purchase date (mm/dd/yy): Item Unit Purchase

Price Date

10 $0.000 /32764/-572332368

Muss ich zu Erstellen Sie eine TXT-Datei und geben Sie die Eingabewerte ein?

#include<stdio.h> 

int main (void) 

{ 

     int item_number, month, day, year; 
     float unit_price; 

     printf("Enter item number: "); 
     scanf("%d", &item_number); 

     printf("Enter unit price: "); 
     scanf("$%f", &unit_price); 

     printf("Enter purchase date (mm/dd/yy): "); 
     scanf("d%/d%/d%", &month, &day, &year); 

     printf("Item Unit Purchase\n"); 
     printf("Price Date\n"); 
     printf("%-d $%.2f%-02d/%02d/%02d\n", item_number, unit_price, month, day, year); 

    return 0; 

} 
+1

Was mit dem ' "d%" ist'? – InternetAussie

+1

@ Èrel bitte, ton es eine Kerbe –

+0

diese https://stackoverflow.com/questions/5157333/problem-writing-in-file/5157380 zeigt, wie man eine Datei in verschiedenen Modi mit fopen öffnen und mit fprintf schreiben . – Adder

Antwort

1

Ändern Sie den "$% f" auf "% f" und "d%" auf "% d", sehen, ob es hilft

1

Sie müssen überprüfen, ob scanf() "gearbeitet".

Einnahme von zwei Ihrer Scanfs als Beispiel

if (scanf("$%f", &unit_price) != 1) { 
    fprintf(stderr, "scanf error at line %d.\n", __LINE__ - 1); 
    exit(EXIT_FAILURE); 
} 

if (scanf("d%/d%/d%", &month, &day, &year) != 3) { 
    fprintf(stderr, "scanf error at line %d.\n", __LINE__ - 1); 
    exit(EXIT_FAILURE); 
} 
1

Dies sind die Warnungen Sie erhalten. Ich würde Ihnen empfehlen, durch diese Warnung zu gehen und es wird Ihnen helfen, das Problem zu verstehen:

warning: unknown conversion type character ‘/’ in format [-Wformat=] 
     scanf("d%/d%/d%", &month, &day, &year); 
      ^
:17:15: warning: unknown conversion type character ‘/’ in format [-Wformat=] 
:17:15: warning: spurious trailing ‘%’ in format [-Wformat=] 
:17:15: warning: too many arguments for format [-Wformat-extra-args] 
:21:16: warning: '0' flag ignored with '-' flag in gnu_printf format [-Wformat=] 
     printf("%-d $%.2f%-02d/%02d/%02d\n", item_number, unit_price, month, da 

Sie benötigen die Verwendung von STDIN ein STDOUT printf() und scanf()format specifier usage kennen. Gehen Sie durch diesen Link, es wird Ihnen helfen.

geändert Sie Ihren Code:

#include <stdio.h> 
int main (void) { 

     int item_number, month, day, year; 
     float unit_price; 

     printf("Enter item number: "); 
     scanf("%d", &item_number); 

     printf("Enter unit price: "); 
     scanf("$%f", &unit_price); 

     printf("Enter purchase date (mm/dd/yy): "); 
     scanf("%d, %d, %d", &month, &day, &year); 

     printf("Item Unit Purchase\n"); 
     printf("Price Date\n"); 
     printf("%d $:%.2f /%d/ %02d, %02d\n", item_number, unit_price, month, day, year); 

    return 0; 
} 

Ausgang:

Enter item number: 10 
Enter unit price: Enter purchase date (mm/dd/yy): 2/6/8 
Item Unit Purchase 
Price Date 
10 $:0.00 /2/ 00, 1183423824