Bildschirmausgabe in txt. speichern



  • Hallo,

    icb bin ein vollkommener Noob im Bereich programmieren..
    Muss aber jetzt für die BA eine Programmieraufgabe machen..
    Tja und da hab ich gerade ein Problem

    Ich mach eine Messdatenerfassung und berechne dann einweing was..
    Am Ende wollte ich halt alles,was auf´m Schirm zu sehen ist
    in einer txt. speichern..
    Aber keine Ahnung wie das geht..
    Hoffe hier kann mir jemand helfen

    #include <stdio.h>
    #include <time.h>
    
    /************************************VARIABLENDEKLARATION************************************************/    
    
      int anz;                                                                                              /* Variable wird als INT deklariert   -> Wertebereich von - 214 748 364 8   bis   + 214 748 364 8  */
      int i,j;
      float mw,mtemp;                                                                                       /* Variable wird als FLOAT deklariert -> Wertebereich von +/- 3,4*10^-38    bis   +/- 3,4*10^38 */
      int widers[100];                                                                                      /* eckigen Klammern  []  stehen die für Array reservierten Elemente */
      float temp[100];
    
    /************************************PROGRAMMBEGINN******************************************************/      
    
      int main()
     {
    
    /*~~~~~~~~~~~~~~~~~~~~~~~~ Anfangstext ~~~~~~~~~~~~~~~~~~~~~~~~*/
    
          FILE*f;   
          char file_name[255];
          char daten[255];
    
          f=fopen("U:\\BA-Zeug\\Programmieren\\Programmieraufgabe\\Aufg.txt","r");                          /* öffnen der Datei "Aufg.txt" zum Lesen mit dem "read-Modus" */
    
          while(fgets (daten,sizeof(daten),f)!=0)                                                           /* in der While Schelife wird so lange zeilenweise fgets() vom Stream f eingelesen, bis diese Funktion den Wert 0 zurück gibt d.h. bis keine Daten mehr zum Lesen sind */                    
          fputs(daten, stdout);                                                                             /* sorgt für die Ausgabe auf Bildschirm */
    
    /*~~~~~~~~~~~~~~~~~~~~~~~~ Datenspeicherung ~~~~~~~~~~~~~~~~~~~~~~~~*/
    
          FILE*p;
          char speicher_name[255];
          printf("\tWo soll die Datei gespeichert werden ? (Bsp.: U:\\\PT100\\Auswertung.txt) \n\n\t");
          scanf("%s",speicher_name);
          printf("\n\n");
          fflush(stdin);
          p=fopen(speicher_name,"w");
          if (p==NULL)
          {
          printf("Die Datei konnte nicht erstellt werden\n\n");
          exit(0);
          }
    
    /*~~~~~~~~~~~~~~~~~~~~~~~~ Uhrzeit- und Datum-Ausgabe ~~~~~~~~~~~~~~~~~~~~~~~~*/           
    
          printf("\tBeginn der Auswertung\n");
          printf("\t~~~~~~~~~~~~~~~~~~~~~~\n");
          time_t sekunden;                                                                                  /* Datentyp time_t siehe time.h */
          struct tm*ortszeit;                                                                               /* Ortszeit als Pointer auf struct */
          char*tag []={"Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"};
                   time (&sekunden);                                                                        /* Speichern der Sekunden beim Programmstart in der Variablen sekunden */                                                                    
                   ortszeit = localtime (&sekunden);                                                        /* Umrechnen der Sekunden und speichern in Struktur */
    
                   printf("\t%s:\t",tag[ortszeit->tm_wday]);                                                       /* Wochentag */
    
                   printf("\t%02d.%02d.%02d\n\n",ortszeit->tm_mday,ortszeit->tm_mon+1,(1900+(ortszeit->tm_year)));     /* Datum */
    
                   printf("\tUhrzeit:\t\t%02d:%02d:%02d\n\n",ortszeit->tm_hour,ortszeit->tm_min,ortszeit->tm_sec); /* Uhrzeit */
    
    /*~~~~~~~~~~~~~~~~~~~~~~~~ Prüferabfrage ~~~~~~~~~~~~~~~~~~~~~~~~*/
    
          char vorname_nachname[60];
          printf("\tName des Pruefers : \t");
          fgets(vorname_nachname,60,stdin);                                                                 /*fgets nimmt vorname_nachname auf und übergibt 60 Zeichen von der Quelle stdin*/
          printf("\n\n\n");
          fputs(vorname_nachname,p);
    
    /*~~~~~~~~~~~~~~~~~~~~~~~~ Messdateneingabe ~~~~~~~~~~~~~~~~~~~~~~~~*/ 
    
          char messwert[100];
          printf("\tWieviele Werte wollen Sie einlesen ?     \n");   
          printf("\tAnzahl der Messwerte : ");                      
          scanf("%d",&anz);                                                                                 /* Eingabe der Anzahl der Messwerte */
          printf("\n\n\tBitte geben Sie nur ganzzahlige Widerstandswerte ein ! \n\n\n");                    /* Aufforderung zur Eingabe */
                                                                                                            /* For Schleife,die für formatierte Eingabe sorgt */
          for (i=0;i<anz;i++)                                                                               /* Schleifenvariable mit 1 initialisiert,anschließend Überprüfung,ob Wert der Schleifenvar. kleiner anz ist,falls das zutrifft,wird der Anweisungsblock ausgeführt */
              {
              printf("\t%d. Messwert [Ohm]: ", i+1);  
              scanf("%d", &widers[i]);                                                                      /* Eingabe der Messwerte */           
              }
    
    /*~~~~~~~~~~~~~~~~~~~~~~~~ Funktion der Messwerteingabe ~~~~~~~~~~~~~~~~~~~~~~~~*/
    
          float mittelwert (int array[],int n_elemente)                                                     /* Diese Funktion gibt das Ergebnis an den Aufrufer zurück */
                {
                int i,gesamt=0;                                                                             /* Variabele "gesamt" wird vom Typ Interger deklariert und 0 gesetzt */
                for (i=0;i<n_elemente;i++)
                                                                                                            /* for schleife, die n_elemente durchläuft */
                         gesamt+=array[i];                                                                  /* einzelnen Arrays werden hier zu gesamt addiert */
                         return ((float)gesamt/n_elemente);                                                 /* Mittelwertsberechnung mit Rückgabe an den Aufrufer */
                }
    
    /*~~~~~~~~~~~~~~~~~~~~~~~~ Messdatenauswertung ~~~~~~~~~~~~~~~~~~~~~~~~*/  
    
           mw=mittelwert(widers,anz);                                                                       /* Wertzuweisung der Variablen mw durch den Rückgabewert der Funktion mittelwert */
           printf("\n\n\n\tDer mittlere Widerstaend betraegt:\t%.2f\t Ohm \n",mw);                          /* Ausgabe des mittleren Widerstandes */
           printf("                                          \t~~~~~~\n\n\n");
    
    /*~~~~~~~~~~~~~~~~~~~~~~~~ Funktion Temperaturumrechnung ~~~~~~~~~~~~~~~~~~~~~~~~*/  
    
           for (j=0;j<anz;j++)                                                                              /* Diese For-Schleife sorgt dafür,das die Widerstände in eine Temp. umgewandelt werden und formatiert ausgegeben werden */
               {  
               temp[j]=(((((float)widers[j])/100)-1)/0.00385);                                              /* (float) ist Cast-Operator und ist notwendig,da die Variable als Int deklariert ist und hier aber float besser angebracht ist -> es erfolgt hier eine explizite Typumwandlung */ 
               printf("\t%d. Temperatur [Grad Celsius]: %.2f\n ", j+1, temp[j]);                            /* Anweisung sorgt für die formatierte Ausgabe */
               }
    
          mtemp=(((mw/100)-1)/0.00385);                                                                     /* Formel für die Berechnung der mittleren Temperatur */  
          printf("\n\n\n\tDie mittlere Temp. betraegt:\t\t%.2f\t Grad Celsius \n",mtemp);                   /* Anweisung sorgt für formatierte Ausgabe der Temp. */
          printf("                                     \t\t~~~~~~\n\n\n\n\n");
    
    /*~~~~~~~~~~~~~~~~~~~~~~~~ Vergleich der Temperaturen ~~~~~~~~~~~~~~~~~~~~~~~~*/        
    
           if ((mtemp < 26) && (mtemp > 22))                                                                /**/
                {
                printf("\tDie mittlere Temperatur liegt im optimalen Bereich !\n");   
                printf("\t                              ~~~~~~~~~~~~~~~~~~~~~~\n\n\n\n\n\n\n");
                }
           else if (mtemp < 22)                                                                             /**/
                {
                 printf("\tDie mittlere Temperatur der Messreihe ist zun niedrig !\n");
                 printf("\t                                              ~~~~~~~~~\n");
                 printf("\tDer optimale Bereich liegt zwischen 22 und 26 Grad Celsius\n\n\n\n\n\n\n");       
                }
           else                                                                                             /**/
                {
                printf("\tDie mittlere Temperatur ist zu hoch !\n");  
                printf("\t                            ~~~~~~~~~\n");   
                printf("\tDer optimale Bereich liegt zwischen 22 und 26 Grad Celsius\n\n\n\n\n");           
                }
    
    /*~~~~~~~~~~~~~~~~~~~~~~~~ Kontrollhilfe (Tabelle) ~~~~~~~~~~~~~~~~~~~~~~~~*/
    
          printf("\tZur Kontrolle einige Wertepaare aus der Linearen Beziehung\n");  
          printf("\t**********************************************************\n\n\n");
          printf("\t|Grad Celsius|   0|  10,00|    20|    40|    60|    80|   100|   120|\n");
          printf("\t|Ohm   	     | 100| 103,85| 107,7| 115,4| 123,2| 130,8| 138,5| 146,2|\n\n\n\n");
    
    /************************************PROGRAMMENDE********************************************************/ 
    
      system("PAUSE");	
      return 0;
    


  • über eine schnelle Antwort würde ich mich freuen 😃
    Freitag ist Projektabgabe ⚠



  • nimm statt 'printf' 'fprintf'. wenns auf den bildschirm soll, nimmste 'stdout' als ersten parameter:

    int fprintf ( FILE * stream, const char * format, ... );
    

    wenn's in eine datei soll, dann öffne eine datei zum schreiben und benutz diesen FILE*
    🙂



  • ich hab es jetzt doch hinbekommen..
    habe bloß noch eine Kleinigkeit..

    Also ich speichere jetzt zum Bsp. so:

    char messwert[100];
          printf("\tWieviele Werte wollen Sie einlesen ?     \n");   
          printf("\tAnzahl der Messwerte : ");                      
          scanf("%d",&anz);                                                                                 /* Eingabe der Anzahl der Messwerte */
          printf("\n\n\tBitte geben Sie nur ganzzahlige Widerstandswerte ein ! \n\n\n");                    /* Aufforderung zur Eingabe */
                                                                                                            /* For Schleife,die für formatierte Eingabe sorgt */
          for (i=0;i<anz;i++)                                                                               /* Schleifenvariable mit 1 initialisiert,anschließend Überprüfung,ob Wert der Schleifenvar. kleiner anz ist,falls das zutrifft,wird der Anweisungsblock ausgeführt */
              {
              printf("\t%d. Messwert [Ohm]: ", i+1);  
              scanf("%d", &widers[i]);                                                                      /* Eingabe der Messwerte */          
              sprintf(widerstand_string,"%d. Messwert [Ohm]: %d \n",i+1,widers[i]);                         /*sprintf wandelt Zahl in einen String um und erst dann kann man den Widerstand mittels fputs ausgeben*/
              fputs(widerstand_string,p);
              }
    

    Problem war,dass Messwerte Integer waren und ich die erst in Strings umwandeln ,musste um die als txt zu speihern..Aber das hab ich jetzt auch

    Bloß wie bekomm ich jetzt ein Leerzeichen in der txt. datei zwischen die einzelnen Zeilen



  • Morgen,

    STaH schrieb:

    ich hab es jetzt doch hinbekommen..
    habe bloß noch eine Kleinigkeit..

    Also ich speichere jetzt zum Bsp. so:

    char messwert[100];
          printf("\tWieviele Werte wollen Sie einlesen ?     \n");   
          printf("\tAnzahl der Messwerte : ");                      
          scanf("%d",&anz);                                                                                 /* Eingabe der Anzahl der Messwerte */
          printf("\n\n\tBitte geben Sie nur ganzzahlige Widerstandswerte ein ! \n\n\n");                    /* Aufforderung zur Eingabe */
                                                                                                            /* For Schleife,die für formatierte Eingabe sorgt */
          for (i=0;i<anz;i++)                                                                               /* Schleifenvariable mit 1 initialisiert,anschließend Überprüfung,ob Wert der Schleifenvar. kleiner anz ist,falls das zutrifft,wird der Anweisungsblock ausgeführt */
              {
              printf("\t%d. Messwert [Ohm]: ", i+1);  
              scanf("%d", &widers[i]);                                                                      /* Eingabe der Messwerte */          
              sprintf(widerstand_string,"%d. Messwert [Ohm]: %d \n",i+1,widers[i]);                         /*sprintf wandelt Zahl in einen String um und erst dann kann man den Widerstand mittels fputs ausgeben*/
              fputs(widerstand_string,p);
              }
    

    Problem war,dass Messwerte Integer waren und ich die erst in Strings umwandeln ,musste um die als txt zu speihern..Aber das hab ich jetzt auch

    Bloß wie bekomm ich jetzt ein Leerzeichen in der txt. datei zwischen die einzelnen Zeilen

    Ich haette gedacht du willste alles was aufn Bildschirm is in ne Datei speichern!? Und dafuer hat dir ja schon ;fricky die Loesung gepostet !? Mit fprintf kannste doch sehr gut eine formatierte Ausgabe erstellen.

    Peace C0de4Fun


Anmelden zum Antworten