Datum formatieren



  • ok, ich habs jetzt einigermaße gerafft mit dem sscanf.

    hab jetzt ein anderes problem.

    ich habe also einen char "tag".

    in dem wurde jetzt eine 2 gespeichert.

    wie kann ich jetzt eine 0 vorr die 2 schreiben.

    mir schwebt da etwas mit strcat im kopf rum.

    _tag = {'0'};
    strcat(_tag, tag);
    tag=_tag;
    

    [EDIT das geht wohl nich so wie ich mir das vorgestellt habe, ich muss wohl strings mit strcpy(); kopieren...:(
    geht sowas?

    weil als beispiel hab ich sowas vor mir:

    char string[50]="blabla";
    printf("%s\n",strcat (string, " = jaja "));



  • Ich glaube, da nimmst du lieber sprintf:

    int Zahl=10;
    	char szZahl[3];
    
    	Zahl<10?sprintf(szZahl,"0%d",Zahl):sprintf(szZahl,"%d",Zahl);
    


  • jo, das is ok, aber ich möchte einen null vor die 2 speichern. und ich hab vorher auf einer dieser variablen gespeichert:

    sscanf(buffer1,"%d.%d.%d",&tag,&monat,&jahr);

    wenn also in tag nur eine 2 steht, dann soll er einen 0 davor machen. sodass 02 drin steht.

    wäre toll wenn mir einer sagen könnte wie das geht 😞

    es geht mir, zum 100'ten mal, ums speichern!!!



  • Kennst du if? Ja.
    Kennst du Schleifen? Ich hoffe ja.
    Jetzt brauchst du nur noch davon gebrauch machen, indem du prüfst, ob zwischen zwei Punkten weniger als 2 Zahlen (char's) sind. Wenn ja, kannst du eine 0 vor die bereits vorhandene Zahl einfügen. Möglicherweise findest du das hilfreich. 🙂



  • wie kann ich testen ob ne zahl im string größer als 31 ist???

    PS: ich hab schhon ne schleife due teste das ganz gut.



  • so ihr papnasen ^^, muss ich alles alleine machen...-.-

    ich muss aber dem bob danken, sein vorschlag am anfang hat mich am ende doch noch auf ne vernünftige lösunge gebracht 🙂

    ich muss das jetzt noch en bissle ummodeln das es total fehlerfrei funtzt, aber ansonsten is das grobe geschafft.

    hier der quelli:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <conio.h>
    #include <ctype.h>
    #include <time.h>
    #include <stdio.h>
    
    int main(void)
    {
    
    	//FILE * fp;
    	int teststring,i=0;
    	int tag,monat,jahr;
    	int _tag=1,_monat=1,_jahr=1;
    	char buffer1[11],test='j';
    
    	while(test=='j')
    	{
    		system("cls");
    		teststring=1;
    
    		_tag=_monat=_jahr=1;
    
        if(teststring==1) 
        { 
            printf("Geben Sie ein Datum ein:");
    
    		scanf("%s",&buffer1);;//scanf("%s",&buffer1); 
    
    		if((( (buffer1[i] =='.' || (buffer1[i]>=48 && buffer1[i]<57))) && buffer1[i] !='\0')) 
            { 
    
            i++; 
            }else if(buffer1[i] != '\0') 
            { 
    
                teststring=0; 
            }else 
            { 
    
                teststring=0; 
        } 
        } 
    
        // =============== Umschreiben in tag, monat, jahr =========================
    
    	sscanf(buffer1,"%d.%d.%d",&tag,&monat,&jahr); 
    
    	// =========================================================================
    
    	if(tag<1 || tag>31)			// TEST auf TAG
        { 
    
    		_tag=0;
        } 
    
        if (monat<1 || monat >12)	// TEST auf MONAT
        { 
    
    		_monat=0;
        } 
    
        if(jahr>4) 
        { 
            jahr=1900+jahr; 
        }else jahr=2000+jahr; 
    
        if(jahr>2004 || jahr<1905)	// TEST auf JAHR
    	{
    
    		_jahr=0;
    	}
    
    	// ---------------------------------------------------------------
    
    	if(_tag !=0 && _monat !=0  && _jahr !=0) // AUSGABE wenn alle Eingaben gültig
    	{
        printf("\n\t\tIhr Datum: %.2i.%.2i.%.2i",tag,monat,jahr); 
    	printf("\n\nWiederholen? (j/n) \n");
    
    	test=_getch();
    
    	}else 
    	{
    		printf("Eingabe ungueltig\n");
    		getch();
    	}	
    	}
    }
    

    wer noch kreative vorschläge hat, immer her damit ... 😃

    PS: was haltet ihr von der kreativen idee einfach nullen vor die zahl ausgeben zu lassen :D, ich find das is echt ne geile idee von mir gewesen.



  • wie kann ich aus einer test.txt datei folgende daten auslesen und ausgeben:

    als Beispiel:

    01.01.2004
    .
    .
    .
    usw



  • @Krugmann

    FILE *fp;
    char zeile[1024];
    
    fp = fopen("datei.dat", "r");
    if(fp)
    {
       while(fgets(zeile, 1024, fp))
       {
          printf("%s", zeile);
       }
    
       fclose(fp);
    }
    

    Viel Spaß!

    Übrigens gibt es in der FAQ des Konsolenforums super Alternativen zu system("CLS"). Oder bist du auch so einer, der mit Kanonen auf Spatzen schießt?? Außerdem ist der Konsolenbefehl CLS, den du ja mit system() aufrufst, nicht immer kompatibel (nur zur Info).



  • also ich hab nix gefunden...kannst mir vielleicht nen link geben? (nicht unbedingt auf english) :>

    was is an CLS so schlimm, das hab ich früher immer in dos verwendet. außerdem isses ganz schnell geschrieben..system("cls"); ...blubb,fertig ^^



  • Krugman schrieb:

    also ich hab nix gefunden...kannst mir vielleicht nen link geben? (nicht unbedingt auf english) :>

    was is an CLS so schlimm, das hab ich früher immer in dos verwendet. außerdem isses ganz schnell geschrieben..system("cls"); ...blubb,fertig ^^

    CLS ist ein Konsolenbefehl in Windows, dahingehend unbrauchbar auf Systemen, die CLS nicht verstehen.

    clrscr() (include conio.h; kein ANSI-C) ist übrigens auch schnell geschrieben 😉 und es ist um längen sicherer und schneller.
    Ansonsten gibt es noch die Improved Console in der Konsolen-FAQ.
    Das Bildschirmlöschen ist übrigens betriebssystemabhängig, d. h. du musst wahrscheinlich für jedes System eine systemeigene Funktion aufrufen, falls du dein Programm portieren willst.


Anmelden zum Antworten