Dlinyj (dlinyj) wrote,
Dlinyj
dlinyj

Глюки Borland C++ 3.1

По работе набросал небольшую программку. Ну, я честно признаюсь, в си не особо силён. Так, со справочником и гуглом пишу. Редко бывает нужда писать Но тут вот прибило. Собственно говоря программа генерирует нужный мне текстовый файл. В начале файла должна быть строчка даты, вида

Date is: 30/09/2010

и дальше идут строчки со временем:

Time is: 01:01:01 input: 0.0000000000

Программа моя запрашивает дату, время и т.п. Забавно, что конструкции абсолютно идентичные, однако почему-то переменная day остаётся равной нулю, вот непонимаю я. Кто подскажет в чём засада? Код под катом, ввод дня идёт в строчке № 16


 1 #include <stdio.h>      /* standard I/O                */ 
 2  #include <string.h>     /* for strcpy - 3 occurrences  */
 3  #include <stdlib.h>     /* for exit   - 1 occurrence   */
 4  #include <ctype.h>
 5  FILE *fp;
 6  int main(void)
 7 {
 8    unsigned short i, year = 2010;
 9    char sec=0,min=20,ch=14, day = 30, month = 10;
10 	fp = fopen ("volt.txt","w");
11 		
12 //	printf("Input date (Day Month Year):");
13 //	while (scanf("Input date (Day Month Year): %02d %02d %4d\n", &day, &month, &year) !=1)
14 	
15 	printf("Input Day:");
16 	while (scanf("%02d", &day) !=1)
17 	printf("Error, please input Day:");
18 	
19 	printf("Input Month:");
20 	while (scanf("%02d", &month) !=1)
21 	printf("Error, please input Month:");
22 
23 	printf("Input date Year:");
24 	while (scanf("%4d",  &year) !=1)
25 	printf("Error, please input Year:");
26 //	scanf("%02d %02d %4d", &day, &month, &year);
27 
28 	printf("Input start Hour:");
29 	while (scanf("%02d", &ch) !=1)
30 	printf("Error please input start Hour:");
31 	
32 	printf("Input start time Min:");
33 	while (scanf("%02d", &min) !=1)
34 	printf("Error please input start Min:");
35 	
36 	printf("Date is: %02d/%02d/%4d\n", day, month, year);
37 	fprintf(fp,"Date is: %02d/%02d/%4d\n", day, month, year);
38 	for(i=0;i<40000;i++)
39      {
40 	if (!(i%3))
41 		 {
42 			sec++;
43 			if (sec == 60)
44 			 {
45 				sec=0;
46 				min++;
47 				if (min == 60)
48 				 {
49 				    min = 0;
50 				    ch++;
51 
52 				 }
53 			 }
54 		 }
55 	    printf("Time is: %02d:%02d:%02d input: 0.0000000000\n", ch, min, sec);
56 	    fprintf(fp,"Time is: %02d:%02d:%02d input: 0.0000000000\n", ch, min, sec);
57 	 }
58    
59    
60 //   printf("'%c'\n", key);
61 	fclose(fp);
62    return 0;
63 }






З.Ы. Попробую это скомпилить gcc в линухе, но позжа. Скажу о результатах.

UPD Заменил char на int - всё заработало. Моя микроконтроллерная привычка экономить каждый байт обернулась против меня.
Tags: c++, Вопрос, Глюк
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 15 comments