Anzeige:
Ergebnis 1 bis 12 von 12

Thema: [C]fgets: error: invalid operands to binary *

  1. #1
    Registrierter Benutzer
    Registriert seit
    18.09.2007
    Beiträge
    24

    Question [C]fgets: error: invalid operands to binary *

    Ich habe gerade erst begonnen mit C da es wie mir scheint mehr möglichkeiten bietet als C++.

    In meinem Tutorial wird auschliesslich scanf verwendet ich möchte allerdings
    fgets verwenden .
    Da ich leider wie gesagt erst angefangen habe kriege ich folgendes script nicht zum laufen..
    Deshalb meine frage wo liegt der Fehler und kennt jemand ein Totorial das nur fgets verwendet zur eingabe?


    Code:
    #include <stdio.h>
    
    int main  (void)
    {
    char a[10];
    char b[10];
    char h[10];
    int ergebnis;
    printf("Berrechnungsprogramm für Quader\n");
    printf("Bitte geben sie die länge ein ein :");
    fgets (a, 10, stdin);
    
    printf("Die Zahl lautet %s\n",a);
    printf("Bitte geben sie die Breite ein:");
    fgets (b, 10, stdin);
    printf("Die Zahl lautet %s\n",b);
    printf("Bitte geben sie die hoehe ein:");
    fgets (h, 10, stdin);
    printf("Die Zahl lautet %s\n",h);
    ergebnis= a[10]*b[10]*h[10];
    printf("Das Volumen betraegt: %d",ergebnis );
    
    
    return 0;
    }
    ausgeführt:
    Berrechnungsprogramm für Quader
    Bitte geben sie die länge ein ein :2
    Die Zahl lautet 2

    Bitte geben sie die Breite ein:4
    Die Zahl lautet 4

    Bitte geben sie die hoehe ein:5
    Die Zahl lautet 5

    Das Volumen betraegt: 53824

  2. #2
    Registrierter Benutzer Avatar von lokicall
    Registriert seit
    17.12.2005
    Beiträge
    53
    Ich denke mal du willst ein Programm schreiben,welches das Volumen eines Quaders ausrechnet bei Eingabe der Abmaße.

    ergebnis= a[10]*b[10]*h[10];
    Funktioniert nicht da Ergebnis vom Typ integer ist und a[10] ein Zeichen bzw. a ein String ist. Der eingegebene String sollte umgewandelt werden in ein integer. Du solltest sowas drin stehen haben:

    Code:
    ergebnis=atoi(a)*atoi(b)*atoi(h);

  3. #3
    Registrierter Benutzer
    Registriert seit
    18.09.2007
    Beiträge
    24
    Danke scheint zu funktionieren..

  4. #4
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Oder gleich mit fscanf Integers eingelesen, bzw.

    Ciao,
    _

    P.S.:
    Ich habe gerade erst begonnen mit C da es wie mir scheint mehr möglichkeiten bietet als C++.
    Der war gut!
    Qt/KDE Entwickler
    Debian Benutzer

  5. #5
    Registrierter Benutzer
    Registriert seit
    18.09.2007
    Beiträge
    24
    Oder gleich mit fscanf Integers eingelesen, bzw.

    Ciao,
    _

    P.S.:
    Zitat:
    Ich habe gerade erst begonnen mit C da es wie mir scheint mehr möglichkeiten bietet als C++.
    Der war gut!
    Das war kein Scherz ..
    Systemnahe programmierung ist mit C++ schwer möglich..(Bsp:Socket Programmierung)

  6. #6
    Registrierter Benutzer Avatar von panzi
    Registriert seit
    04.05.2001
    Ort
    Kottingbrunn
    Beiträge
    609
    Zitat Zitat von loster Beitrag anzeigen
    Das war kein Scherz ..
    Systemnahe programmierung ist mit C++ schwer möglich..(Bsp:Socket Programmierung)
    Wieso soll das nicht möglich sein? Ja, dazu verwendet man die C API für sockets oder besser eine der ach so vielen C++ wrapper drumm rum die das ganze schön OO machen. Jedenfalls kann man mit C++ alle C APIs verwenden, aber nicht umgekehrt. Von dem her bietet C++ mehr Möglichkeiten.
    Intel Core 2 Duo CPU 2.66GHz; Nvidia GeForce 8 8800 GTS; 4GB RAM; Fedora 12; KDE-testing

  7. #7
    Registrierter Benutzer
    Registriert seit
    18.09.2007
    Beiträge
    24
    C scheint mir insofern systemnäher weil der großteil aus linux in c geschrieben ist und meiner meinung nach C++, Befehle wie fgets ..fehlen..
    Natürlich kann man C und C++ mischen worauf ich allerdings wenig lust habe.

  8. #8
    Registrierter Benutzer Avatar von panzi
    Registriert seit
    04.05.2001
    Ort
    Kottingbrunn
    Beiträge
    609
    Zitat Zitat von loster Beitrag anzeigen
    C scheint mir insofern systemnäher weil der großteil aus linux in c geschrieben ist und meiner meinung nach C++, Befehle wie fgets ..fehlen..
    Natürlich kann man C und C++ mischen worauf ich allerdings wenig lust habe.
    Dafür gibts istream& getline ( istream& is, string& str ). Das kann dann auch gleich Zeilen belibiger Länge lesen. Du musst nicht mehr einen Puffer von fixer größer übergeben und wenn der zu klein ist einen neuen allokieren, Daten reinkopieren und weiterlesen. Nein, das macht alles die Funktion getline.

    Ja, Linux ist in C geschrieben. Es gibt kaum Kernels die in C++ geschreiben sind (ich glaub die F4 Implementierung Fiasco ist der einzige nennenswerte?), aber es gibt viele Linux Programme die in C++ geschriebensind. Alle KDE Programme und auch viele GNOME/Gtk+ Programme sind in C++ (oder noch höheren Hochsprachen wie Python, Ruby, C#, ...) geschrieben.

    Ich will hier jetzt C++ nicht in den Himmel loben. Nein, es gibt genug Gründe warum man C den Vorzug geben könnte, aber das man mit C++ weniger felxiebel ist und nicht mit Sockets programmieren kann stimmt einfach nicht. Mit C++ hat mall alle C und C++ APIs zur Verfügung, mit C nur die C APIs.

    Einer der vielen C++ Wrapper für sockets ist z.B.: http://www.nullsoft.com/free/jnetlib/

    Ansonsten google nach "c++" sockets.
    Geändert von panzi (05-11-2007 um 16:35 Uhr)
    Intel Core 2 Duo CPU 2.66GHz; Nvidia GeForce 8 8800 GTS; 4GB RAM; Fedora 12; KDE-testing

  9. #9
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Mal ganz abgesehen davon, dass selbst C Programmierer selten die C API direkt benutzen, sondern meistens auch über bequeme Wrapper wir GLib arbeiten.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  10. #10
    Registrierter Benutzer
    Registriert seit
    18.09.2007
    Beiträge
    24
    zum thema socket ..
    1.)C hat bei den Funktionen meiner meinung nach einfach mehr möglichkeiten..
    2.)Schon mal ein gutes C++ Socket Tutorial gefunden das keine externen
    Header beinhaltet? Also ich hab nichts passendes gefunden für linux..

  11. #11
    Registrierter Benutzer Avatar von panzi
    Registriert seit
    04.05.2001
    Ort
    Kottingbrunn
    Beiträge
    609
    Zitat Zitat von loster Beitrag anzeigen
    zum thema socket ..
    1.)C hat bei den Funktionen meiner meinung nach einfach mehr möglichkeiten..
    Vorallem auch um Fehlerzustände zu übergehen weil die per Returnwerten funktionieren und nicht mit exceptions.
    2.)Schon mal ein gutes C++ Socket Tutorial gefunden das keine externen
    Header beinhaltet? Also ich hab nichts passendes gefunden für linux..
    Nein. Aber wenn man keine externen libs verwenden will kann man nur ein shell app schreiben. Nix mit graphischer Oberfläche. Und bleibt man bei ANSI C kann man nicht mal getopt verwenden. Also ANSI C + POSIX ist IMHO einfach viel zu wenig. ANSI C + POSIX + STL + boost geht für vieles, aber graphisch ist man damit immer noch nicht.
    Intel Core 2 Duo CPU 2.66GHz; Nvidia GeForce 8 8800 GTS; 4GB RAM; Fedora 12; KDE-testing

  12. #12
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Zitat Zitat von loster Beitrag anzeigen
    zum thema socket ..
    1.)C hat bei den Funktionen meiner meinung nach einfach mehr möglichkeiten..
    In Bezug auf Sockets?

    Ich würde es ja verstehen, wenn es darum geht, möglichst assemblernahe für eine DSP zu programmieren, aber Sockets?

    2.)Schon mal ein gutes C++ Socket Tutorial gefunden das keine externen
    Header beinhaltet? Also ich hab nichts passendes gefunden für linux..
    Abgesehen davon, dass ich jetzt nicht weiß, was du mit "externen" Headern meinst und es daher als Header eine Zusatzbibliothek interpretiere, ist es in C praktisch genau so, d.h. wenn man nicht gerade gezwungen wird zieht man auch dort die besseren Varianten (u.a. GLib) vor.

    Etablierte Bibliotheken sind ja nicht nur bequemer, sondern ermöglichen es dem Entwickler ja hauptsächliche, sich auf die eigentlichen Aufgaben des Programms zu konzentrieren und nicht zum wiederholten Male die selben Lowlevel Abläufe nachzubauen, zu testen, zu bereinigen und zu warten.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •