C Programmausgabe vergleichen

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • C Programmausgabe vergleichen

      Hallo, Ich bin neu in dem Forum und hab mal ne kurze Frage.
      Wir schreiben in der Schule kleine C programme und bekommen dann dafür testfiles.
      Auf Windows habe ich mir einfach ne .bat geschreiben die sah ca so aus:

      nameProgramm < nameTestfile.in > test1.txt

      test1.txt comp nameTestfile.out

      Also er schickt das .in in das programm und gibt die ausgabe in eine txt dann vergleiche ich die ausgabe mit dem bekommenen .out file um zu sehen ob sie gleich groß sind.

      Nun zu meiner Frage, wie mache ich das auf Mac Os X ???

      Habe schon die eine oder andere Stunde mit diesem Thema verbracht.

      Danke schon mal für eure Antworten

      Grüße NewApple
    • Hallo,

      schau mal hier: C Programmausgabe vergleichen. Dort wird jeder fündig!

      Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
    • RE: C Programmausgabe vergleichen

      Poste mal den Inhalt der Bat-Datei. Dieser kann dann vermutlich in Bash neu geschrieben werden.
      Also nochmal: du möchtest nicht den Quelltext vergleichen sondern die Ausgabe der kompilierten Dateien?!

      Willkommen im Forum.
      AMD Ryzen 7 PRO 5750G, 32 GB RAM, 1 TB NVMe SSD, RTX 3060, Win 11
      iPad Air 2 64 GB, iPhone 13 128 GB
      UPS: APC Back-UPS Pro 900VA BR900G-GR

      "Der Erwerb von Reichtum ist nicht mehr die treibende Kraft in unserem Leben. Wir arbeiten, um uns selbst zu verbessern – und den Rest der Menschheit." (Jean-Luc Picard)
      Feedback an Apple

      Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von raymond ()

    • Ja also die bat datei da is eigentlich nicht so viel drinnen wenn das kompilierte programm jetzt u4_largest heißt dann sieht die ca so aus:

      u4_largest < u4_largest_test1.in > test1.txt
      u4_largest < u4_largest_test2.in > test2.txt

      usw sind meistens 5-8 files dann der vergleich der ausgabe:

      test1.txt comp u4_largest_test1.out
      test2.txt comp u4_largest_test2.out

      usw. das wars im prinzip als ausgabe bekommt man dann halt ob die dateien gleich groß sind oder nicht .

      Kann mir halt überhaupt nicht vorstellen wie ich das am Mac machen soll da ich Ihn erst seit 2 Tagen habe

      Grüße Manuel
    • Hm, das läuft ja unter Windows bestimmt nicht einfach so... Da musst Du schon irgendwo in einem Entwicklerpaket einen C-Compiler haben....

      Das brauchst du auch für den Mac - ein Entwicklerpaket mit C-Compiler...

      Udo
      MacPro5,1 12 x 2,66 GHz (2 TB, 1 TB, 500 GB SSDs) - MacBookPro6,2 2,4 GHz (1 TB SSD) - mit Sierra (10.12.6),
      MacBook7,1 2,4 GHz (1 TB SSD) mit Mavericks (10.9.5),
      MacMini4,1 2,4 GHz mit High Sierra (10.13.6),
      MacBookPro11,5 (1 TB SSD) 2,8 GHz mit Yosemite (10.10.5)
      MacPro2,1 8 x 3,0 GHz mit Snow Leopard (10.6.8)
      am HP LaserJet P2055dn und HP LaserJet 400 color M451dn/
      iPhone 13 mini (mit iOS 17.2.1) - iPad 9 (mit iOS 17.2)
    • Den gcc compiler gibts auf der ersten Mac OS X DVD. Das ist nicht das Problem. Aber man kann das auch problemlos scripten.
      So ich habe da mal was gescriptet:

      Shell-Script

      1. #!/bin/bash
      2. wc -c $1
      3. wc -c $2
      4. if [ $1 == $2 ]
      5. then
      6. echo "Datei 1 ist genauso groß wie Datei 2"
      7. else
      8. echo "Datei 1 ist NICHT genauso groß wie Datei 2"
      9. fi

      Das ist eine Datei abgespeichert, bspw. vergleiche.sh und mit "chmod 755 vergleiche.sh" die Rechte gesetzt.

      Ausgaben:

      Quellcode

      1. Raymonds-iMac:Desktop Raymond$ ./vergleiche.sh /Users/Raymond/.bash_history /Users/Raymond/.bash_history
      2. 9626 /Users/Raymond/.bash_history
      3. 9626 /Users/Raymond/.bash_history
      4. Datei 1 ist genauso groß wie Datei 2

      Quellcode

      1. Raymonds-iMac:Desktop Raymond$ ./vergleiche.sh /Users/Raymond/.bash_history /Users/Raymond/.Xauthority
      2. 9626 /Users/Raymond/.bash_history
      3. 0 /Users/Raymond/.Xauthority
      4. Datei 1 ist NICHT genauso groß wie Datei 2

      Aber so simple sollte es nicht sein?
      AMD Ryzen 7 PRO 5750G, 32 GB RAM, 1 TB NVMe SSD, RTX 3060, Win 11
      iPad Air 2 64 GB, iPhone 13 128 GB
      UPS: APC Back-UPS Pro 900VA BR900G-GR

      "Der Erwerb von Reichtum ist nicht mehr die treibende Kraft in unserem Leben. Wir arbeiten, um uns selbst zu verbessern – und den Rest der Menschheit." (Jean-Luc Picard)
      Feedback an Apple

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von raymond ()

    • Original von NewApfel
      und statt 1 und 2 setz ich in dem fall dann den datei namen ein oder?

      Manuel


      Es wird nur die Dateigröße in bytes verglichen. Die Variablen $1 und $2 sind Übergabeparameter, also:

      Quellcode

      1. ./vergleiche.sh /Users/Raymond/.bash_history /Users/Raymond/.Xauthority
      2. ^ erste Datei ^ zweite Datei

      Das Script ist nur ein Beispiel für Vergleiche von 2 Dateien anhand der Dateigröße. Für mehrere Dateien musst du dieses natürlich erweitern.

      Mir ist immer noch nicht klar, ob du die Dateigröße oder den Inhalt vergleichen möchtest (was dann mit dem Befehl "diff" zu bewerkstelligen ist)
      AMD Ryzen 7 PRO 5750G, 32 GB RAM, 1 TB NVMe SSD, RTX 3060, Win 11
      iPad Air 2 64 GB, iPhone 13 128 GB
      UPS: APC Back-UPS Pro 900VA BR900G-GR

      "Der Erwerb von Reichtum ist nicht mehr die treibende Kraft in unserem Leben. Wir arbeiten, um uns selbst zu verbessern – und den Rest der Menschheit." (Jean-Luc Picard)
      Feedback an Apple

      Dieser Beitrag wurde bereits 10 mal editiert, zuletzt von raymond ()

    • Also vielleicht doch eher mit diff. Schicke mir mal zwei Ausgaben zu, wo ich mal was schreiben kann, bzw. probiere es selbst mal aus:

      im Terminal:

      Quellcode

      1. diff erstedatei.txt zweitedatei.txt

      Hilfe zu diff auch im terminal mit

      Quellcode

      1. man diff
      AMD Ryzen 7 PRO 5750G, 32 GB RAM, 1 TB NVMe SSD, RTX 3060, Win 11
      iPad Air 2 64 GB, iPhone 13 128 GB
      UPS: APC Back-UPS Pro 900VA BR900G-GR

      "Der Erwerb von Reichtum ist nicht mehr die treibende Kraft in unserem Leben. Wir arbeiten, um uns selbst zu verbessern – und den Rest der Menschheit." (Jean-Luc Picard)
      Feedback an Apple

      Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von raymond ()

    • so hab das jetzt mal anhand von einem kleinem beispiel versucht mit diff sieht dann so aus:


      Manuel-MacBook-Pro:~ Manuel$ /Users/Manuel/Documents/Xcode/u2_isbn/build/Debug/script.command ; exit;
      1,5c1,5
      < Enter ISBN:GS1 prefix: 978
      < Group identifier: 0
      < Publisher code: 393
      < Item number: 97950
      < Check digit: 3
      ---
      > Enter ISBN: GS1 prefix: 978
      > Group identifier: 0
      > Publisher code: 393
      > Item number: 97950
      > Check digit: 3
      logout

      da vergleicht er meine programmasugabe mit der .out datei nur berücksichtigt er hier auch leer zeichen?
    • Diff gibts auch in hübscher Ausgabe names FileMerge:
      macfidelity.de/2008/10/02/mac-…-vergleichen-in-mac-os-x/

      Ja Leerzeichen werden beachtet (gerade mit Mac OS X 10.6 und aktuellem FileMerge 2.5 getestet)
      AMD Ryzen 7 PRO 5750G, 32 GB RAM, 1 TB NVMe SSD, RTX 3060, Win 11
      iPad Air 2 64 GB, iPhone 13 128 GB
      UPS: APC Back-UPS Pro 900VA BR900G-GR

      "Der Erwerb von Reichtum ist nicht mehr die treibende Kraft in unserem Leben. Wir arbeiten, um uns selbst zu verbessern – und den Rest der Menschheit." (Jean-Luc Picard)
      Feedback an Apple

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von raymond ()

    • Das hört sich ja alles nicht schlecht an aber ich mache das ja eigentlich das ich nicht immer alles von hand eingeben muss mit dem script das das jetzt vergleicht starte ich das script und er testet automatisch alle 8 -20 testfiles wenn ich zb Filemerge verwende muss ich jeden einzelne datei immer auswählen bevor getestet wird oder?
    • Also nochmal ganz langsam:
      Du musst was von der Schule aus programmieren und bekommst die Lösung in einer Datei von der Schule. Jetzt willst du ja nur deine Lösung mit die von der Schule vergleichen als reicht doch 2 Dateien miteinander zu vergleichen.

      Oder möchtest du:

      Deine_Lösung_für_Aufgabe1.txt mit Lösung_Aufgabe1.txt
      und
      Deine_Lösung_für_Aufgabe2.txt mit Lösung_Aufgabe2.txt
      und
      Deine_Lösung_für_Aufgabe3.txt mit Lösung_Aufgabe3.txt
      usw.

      mit einem Abwasch vergleichen und dir in einem Fenster alle Unterschiede anzeigen lassen und eventuell die Gesamtanzahl an Unterschiede counten lassen?
      AMD Ryzen 7 PRO 5750G, 32 GB RAM, 1 TB NVMe SSD, RTX 3060, Win 11
      iPad Air 2 64 GB, iPhone 13 128 GB
      UPS: APC Back-UPS Pro 900VA BR900G-GR

      "Der Erwerb von Reichtum ist nicht mehr die treibende Kraft in unserem Leben. Wir arbeiten, um uns selbst zu verbessern – und den Rest der Menschheit." (Jean-Luc Picard)
      Feedback an Apple

      Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von raymond ()

    • also ich bekomme ein beispiel das heist zum beispiel u2_tax ein programm das die mwst. zu einem betrag dazu rechnet zu diesem beispiel bekomme ich ca 10 testfiles in den .in datein sind eingaben drinnen die das programm testen und in den out datein sind die richtigen ausgaben für die .in datein drinnen und ich brauch ein program das automatisch ein testfile nach dem anderem für dieses programm testet und mir dann sagt ob sie gleich groß sind oder etwas anders ist zb ein leerzeichen oder eine komma stelle zu viel usw.

      Hoffe das war jetzt nicht zu verwirrend.

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von NewApfel ()

    • Okay so langsam verstehe ich es auch. Mach es doch so:
      Schicke mir/uns mal den C Quellcode von dem u2_tax programm (ist ja hoffentlich kein Copyright drauf)(dieses muss ja auch per Parameterübergabe die Werte von der in Datei einlesen...) und jeweils 2 in und 2 out Dateien.
      AMD Ryzen 7 PRO 5750G, 32 GB RAM, 1 TB NVMe SSD, RTX 3060, Win 11
      iPad Air 2 64 GB, iPhone 13 128 GB
      UPS: APC Back-UPS Pro 900VA BR900G-GR

      "Der Erwerb von Reichtum ist nicht mehr die treibende Kraft in unserem Leben. Wir arbeiten, um uns selbst zu verbessern – und den Rest der Menschheit." (Jean-Luc Picard)
      Feedback an Apple

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von raymond ()

    • Also der Vergleich funktioniert leider auch noch nicht so ganz weil er listet mir meine ausgabe und die SOLL -Ausgabe untereinander auf aber wenn ich bei meinem programm irgendwo ein leerzeichen setze das in der .out datei nicht vorhanden ist dann zeigt er mir trotzdem dieses 1,5c1,5 an und sagt mir nicht das die datein unterschiedlich sind
    • Shell-Script

      1. #!/bin/bash
      2. z=1
      3. for i in *.in ; do
      4. ./u1 < $i > out$z;
      5. z=$[$z+1]
      6. done;
      7. # Vergleiche Dateien
      8. zz=1
      9. for l in *.out ; do
      10. echo
      11. echo Vergleiche $l mit out$zz:
      12. diff $l out$zz;
      13. zz=$[$zz+1]
      14. done;
      Alles anzeigen

      u1 ist hierbei das dein kompiliertes Programm. Die gewünschten diff Optionen kannst du ja selbst im Skript einstellen.
      AMD Ryzen 7 PRO 5750G, 32 GB RAM, 1 TB NVMe SSD, RTX 3060, Win 11
      iPad Air 2 64 GB, iPhone 13 128 GB
      UPS: APC Back-UPS Pro 900VA BR900G-GR

      "Der Erwerb von Reichtum ist nicht mehr die treibende Kraft in unserem Leben. Wir arbeiten, um uns selbst zu verbessern – und den Rest der Menschheit." (Jean-Luc Picard)
      Feedback an Apple

      Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von raymond ()

    • Achso: wenn die Dateien gleich sind wird nichts angezeigt, wie hier im Beispiel test1:

      Quellcode

      1. Raymonds-iMac:tax Raymond$ ./test.sh
      2. Vergleiche u1_tax_test1.out mit out1:
      3. Vergleiche u1_tax_test2.out mit out2:
      4. 1c1
      5. < Enter an amount: With tax added : 1453.19
      6. ---
      7. > Enter an amount : With tax added 1453.19
      8. \ No newline at end of file
      9. Raymonds-iMac:tax Raymond$
      Alles anzeigen
      AMD Ryzen 7 PRO 5750G, 32 GB RAM, 1 TB NVMe SSD, RTX 3060, Win 11
      iPad Air 2 64 GB, iPhone 13 128 GB
      UPS: APC Back-UPS Pro 900VA BR900G-GR

      "Der Erwerb von Reichtum ist nicht mehr die treibende Kraft in unserem Leben. Wir arbeiten, um uns selbst zu verbessern – und den Rest der Menschheit." (Jean-Luc Picard)
      Feedback an Apple