[Anfängerfrage] Problem bei Benutzereingabe

Hi.
Header.h :

C:
#include <iostream>
#include <iomanip>
#ifndef Header.h
#definde Header.h
Du mußt es doch nun wirklich einfach nur kopieren.... :confused:

Erstens heißt es define und nicht anders.

Zweitens hat dir auch niemand gesagt "Header.h" zu schreiben sondern "HEADER_H". Der Punkt ist kein gültiges Zeichen in einem Bezeichner und grundsätzlich werden alle Präprozessormakros groß geschrieben.

Gruß

PS: Ganz kurz zur Erklärung: wenn eine Headerdatei den Namen xyz.h hat, dann nennt man überlicherweise den sogenannten "Include-Beschützer" XYZ_H. Deswegen hat 3Cyb3r eben bei deiner Headerdatei den Namen HEADER_H vorgeschlagen.
 
Zuletzt bearbeitet:
Hallo,

wie immer Danke für eure Unterstützung. Ich habe es jetzt korrigiert. doch erhalte nun bei der Header.c Datei einen Fehler ;)

Damit die Fehleranalyse besser von statten geht, habe ich einmal den Projektordner hochgeladen, damit ihr Einsicht auf alle Dateien habt.

Dracul - A Vampire Story

Der Compiler zeigt folgendes an:

In file included from Header.c:2:
Header.h:3:9: macro names must be identifiers
Header.c: In function `char Header()':
Header.c:8: error: `cout' undeclared (first use this function)
Header.c:8: error: (Each undeclared identifier is reported only once for each function it appears in.)
Header.c:8: error: `setfill' undeclared (first use this function)
Header.c:8: error: `setw' undeclared (first use this function)

Header.c:16:40: warning: unknown escape sequence: '\040'

make.exe: *** [Header.o] Error 1

Ausführung beendet

Ich hoffe, wir bekommen meine Probleme in den Griff, damit ich weiter voran komme. Ich weiß natürlich, dass es nervt, immer an der selben Stelle nach zu fragen, aber ich möchte einfach, dass es einwandfrei funktioniert :)
 
Hi.
wie immer Danke für eure Unterstützung. Ich habe es jetzt korrigiert. doch erhalte nun bei der Header.c Datei einen Fehler ;)

Damit die Fehleranalyse besser von statten geht, habe ich einmal den Projektordner hochgeladen, damit ihr Einsicht auf alle Dateien habt.

Dracul - A Vampire Story

Der Compiler zeigt folgendes an:

In file included from Header.c:2:
Header.h:3:9: macro names must be identifiers
Nochmal: warum kopierst du es nicht? :confused:

Du hast es schon wieder falsch abgeschrieben. Die Anführungsstriche haben dort nichts zu suchen.
Header.c: In function `char Header()':
Header.c:8: error: `cout' undeclared (first use this function)
Header.c:8: error: (Each undeclared identifier is reported only once for each function it appears in.)
Header.c:8: error: `setfill' undeclared (first use this function)
Header.c:8: error: `setw' undeclared (first use this function)
Das Objekt cout, setw und setfill sind (wie jede(r) Klasse / Typ der Standard Template Library) im Namensraum std definiert. Du könntest z.B. in die Header.c Datei eine "using namespace std" Anweisung aufnehmen, so wie in der main.cpp auch.

Da fällt mir gerade auf das du ja C++ verwendest. Da solltest du die Endung der Header.c in Header.cpp ändern.
Header.c:16:40: warning: unknown escape sequence: '\040'
Du hast dort in Zeile 16, Spalte 40 im Stringliteral einen Backslash gefolgt von einem Leerzeichen. Das ist keine gültige Escape-Sequenz.

Gruß
 
Guten Abend,

jetzt läuft es wie geplant, danke für alles bisherige! Und Entschuldigung, falls ich mit meiner Dummheit oder Unwissenheit genervt habe, da es ja immer um das selbe Problem ging.

Doch einmal möchte ich mich rechtfertigen, weshalb ich den Code nicht kopiert hatte, denn 3Cyb3r ist ein kleiner Flüchtigkeitsfehler unterlaufen, als er die #ifndef usw postete:

#ifndef HEADER_H
#definde HEADER_H

// und am Ende der Datei
#endif

Ich weiß, dass die Schuld bei mir lag, und es soll um Gottes Willen nichts gegen 3Cyb3r sein! Aber da ich sehr neu auf dem Gebiet bin, konnte ich es leider nicht wissen, dass das e zuviel ist... .Lange Rede kurzer Sinn, Danke!
 
Hi.
Doch einmal möchte ich mich rechtfertigen, weshalb ich den Code nicht kopiert hatte, denn 3Cyb3r ist ein kleiner Flüchtigkeitsfehler unterlaufen, als er die #ifndef usw postete:

#ifndef HEADER_H
#definde HEADER_H

// und am Ende der Datei
#endif
Sorry. Das hab ich nicht gesehen :-( Manchmal ist man etwas betriebsblind...

Gruß

PS: Bitte noch das Thema als erledig markieren. Danke!
 
Guten Tag,

ich möchte nicht lange um den heißen Brei herum reden, deshalb gleich weiter zu meinem Problem. Dieses Mal ist es ein "Schönheitsfehler". Wie ihr sicherlich dem Screenshot entnehmen könnt, tauchen da Zahlen auf (1. Unter den Rauten und am Ende vor "Drücken Sie eine Taste"). Woher kommen diese und was viel wichtiger ist, wie entferne ich sie?

Schönheitsfehler

Main.cpp
Code:
//#include <cstdlib>
#include <iostream>
#include <iomanip>
#include "Header.h"
#include <windows.h>


using namespace std; 

int main()
{
    
    system ("title racul - A Vampire Story");
    system ("color 04");
    int x = 0;
    int y = 0;
            for (int i=0; i<224;i++)
  {
  x = x+6;
  Sleep (2);
  y=y+1;
HWND hwnd = FindWindow("ConsoleWindowClass",NULL); 
MoveWindow(hwnd,250,100,x,y,TRUE);
}
cout<<Header();   
cout<<Intro();
//system("cls");     
    system("PAUSE");
    return 0;
}

Header.cpp
Code:
#include <iostream>
#include "Header.h"
#include <iomanip>
#include <windows.h>
using namespace std;
int Header()
{
         cout<<setfill('#')<<setw(80)<<"#";
         cout<<setfill(' ');
         cout<<"#"<<setw(79)<<"#";
         cout<<"#"<<setw(79)<<"#";
         cout<<"#"<<"\t\t\t   Dracul -  A Vampire Story"<<setw(28)<<"#";
         cout<<"#"<<"\t\t\t     Created by Lesterdor"<<setw(31)<<"#";
         cout<<"#"<<setw(79)<<"#";
         cout<<"#"<<setw(79)<<"#";
         cout<<setfill('#')<<setw(85)<<"#\n\t\t  ";
};

int Intro()
{
cout<<"\n";
cout<<"\n";
cout<<"\n";
cout<<" *";
Sleep(300);
cout<<" *";
Sleep(300);
cout<<" *";    
cout<<" Willkommen bei Dracul - A Vampire Story. Dieses kleine Spiel ist eine ArtAdventure, welches Sie komplett ueber die Tastatur spielen."<<endl;
cout<<"Damit Sie die Handlungen, die Ihnen zur Entscheidung stehen, ausfuehren koennen,druecken Sie einfach den Buchstaben, der in den Klammer steht.\n";
cout<<"\t\t\t\t Viel Erfolg! ";
Sleep(600);
cout<<" *";
Sleep(600);
cout<<" *";
Sleep(600);
cout<<" *\n";   
};

Header.h
Code:
#include <iostream>
#include <iomanip>
#ifndef HEADER_H
#define HEADER_H

int Header();
int Intro();

#endif

Wie immer herzlichen Dank im Voraus.
 
Hi.

Du hast definiert das die Funktionen Header und Intro einen Integerwert zurückgeben.

Allerdings hast du keine return Anweisung in den Funktionen (was eigentlich vorgeschrieben ist - du verwendest anscheinend einen etwas älteren Compiler).

Und du gibst die (zufälligen) Integerwerte ja auch explizit aus:
C++:
cout << Header(); 
cout << Intro();
Ändere den Rückgabewert der Funktionen in void und nimm die Ausgabeanweisungen weg.

Gruß

PS: Wenn dein Beiträg nichts mehr mit dem Thema ([Anfängerfrage] Problem bei Benutzereingabe
) zu tun hat, solltest du besser ein neues Thema anlegen.
 
Zurück