Re[4]: использование scanf()
От: Аноним  
Дата: 17.04.05 10:33
Оценка:
Здравствуйте, TARGRED, Вы писали:

TAR>При написании три или больше букв программа закрывается.

TAR>Может глюк компилятора?






TAR>
TAR>//---------------------------------------------------------------------------
TAR>#include <stdio.h>
TAR>#pragma hdrstop

TAR>//---------------------------------------------------------------------------

TAR>#pragma argsused
TAR>int main(int argc, char* argv[])
TAR>{

TAR>        int s;

TAR>        struct { char name[10];
TAR>                 unsigned sum;
TAR>                 int type;
TAR>                 union { char software[9];
TAR>                         char not_software[13];
TAR>                       }licenzia;
TAR>                         struct {
TAR>                                  unsigned i;/*  */
TAR>                                  char FIO[40];
TAR>                                      union { unsigned day;
TAR>                                              unsigned year;
TAR>                                              unsigned chas;
TAR>                                            }Date;
TAR>                                 }Raz;

TAR>                }  Disk_s;

TAR>        printf("%s", " ---------------------------------------------------\n ");
TAR>        printf("%s", "|                  Program   Book CD              |\n ");
TAR>        printf("%s", "|                      versia 1.0                 |\n ");
TAR>        printf("%s", "---------------------------------------------------\n ");
TAR>        printf("%s", " \n\n\n\n\nInfo:\n  1. Name (CD)\n  2. Price (CD) \n  3. One (softwere) or Zero (not_software)\n  4. I (int CD)\n  5. FIO \n  6. Day or Year \n  7. Time \n--------------------------------------------------\n\n                       Cansel or Ok \n--------------------------------------------------\n");




TAR>        scanf("%c",&Disk_s.name,"\r");
TAR>        scanf("%d",&Disk_s.sum,"\r");
TAR> /*=======================================================*/
TAR>        scanf("%c",&s,"\r");
TAR>        if(s=="One")
TAR>        {
TAR>            Disk_s.licenzia.software=="software";

TAR>        }
TAR>        else if(s=="Zero")
TAR>        {
TAR>            Disk_s.licenzia.not_software=="not_software";
TAR>        }
TAR> /*=======================================================*/
TAR>        scanf("%d\r",&Disk_s.Raz.i);
TAR>        scanf("%d\r",&Disk_s.Raz.FIO);
TAR>/*========================================================*/
TAR>        scanf("%d\r",&s);
TAR>        if(s=="Day" || s=="day")
TAR>        {
TAR>           scanf("%c\r",&Disk_s.Raz.Date.day);

TAR>        }
TAR>        else if(s=="Year" || s=="year")
TAR>        {
TAR>           scanf("%c\r",&Disk_s.Raz.Date.year);
TAR>        }
TAR>/*=======================================================*/
TAR>        scanf("%d",&s);
TAR>        if(s=="Cansel" || s=="cansel")
TAR>        {
TAR>            printf("%s\r", "-------------Cansel--------------");
TAR>        }
TAR>        else if(s=="ok" || s=="Ok")
TAR>        {
TAR>            FILE *ft;
TAR>            if((ft=fopen("C:\1.txt","a"))!=NULL)
TAR>            {
TAR>                fprintf(ft,"%d",Disk_s.name,"\r");
TAR>               if( fclose(ft)==0)
TAR>               {
TAR>                 printf("%d", "File write and close");
TAR>                 close();
TAR>               }
TAR>            }

TAR>        }





TAR>        return 0;
TAR>}
TAR>//---------------------------------------------------------------------------
TAR>



"\r" должно быть в строке формата! иначе туда чего то пишется, два символа гробят \r\0, а дальше-абзац
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.