Weiter gehts mit C

Ok das letzte Prob hab ich gelöst.

Nun hab ich aber folgendes:

Ich will ein Programm das etwas ausgibt wenn vorher das richtige eingegeben wurde. also etwas mit if. So passwort ähnlich, also so das mein text nur dann ausgegeben wird wenn ich das richtige eingebe, ansonsten etwas anderen

Ich dachte mir das so:

Code:
#include <stdio.h>
char Wort[10];
int main()
{
printf("Wort eingeben:");
fgets(Wort,sizeof(Wort),stdin);
if(Wort==Hallo)
printf("Das eingegebene Passwort ist richtig!");
else
printf("Falsches Passwort");
}

Das funzt aber leider nicht!!! Wäre cool wenn mir einer erklären könnte was ich falsch gemacht hab...thx...

PS: die zeile
Code:
fgets(Wort,sizeof(Wort),stdin);
hab ich genau so aus einem Tut genommen habe also daher nicht wirklich ne ahnung was die einzelnen Befehle bewirken. wäre nett wenns einer kurz erklären könnte, im Tut stand davon nix...

PPS: Denkt nicht das ich faulerweise einfach drauflos frage, ich hab vorher schon ordentlich gegoogelt"
 
die zeile
if(Wort==Hallo)
muss heßen
if(Wort=="Hallo")
weil der compiler sonst annimmt das Hallo eine Variable und kein (konstanter) string ist

zu der funktion fgets
der erste parameter gibt an worin der string den fgets liefert gepspeichert werden soll
der zweite gibt an wieviel zeichen gelesen werden sollen (hier größe der Wort variable)
der dritte gibt an woher fgets die daten holen soll (hier standardeingabestrom)

das ganze kannst du auch in der msdn nachlesen
http://msdn.microsoft.com/library/d...ry/en-us/vclib/html/_crt_fgets.2c_.fgetws.asp
 
Vielen Dank für die Erklärung!

Es funzt aber doch nicht...also, ich konnte das prog jetzt kompillieren (Unter Mandrake Linux, gcc) aber es tut nicht ganz das was ich will...

Code:
#include <stdio.h>

char Wort[6];

int main()
{
printf("Gib das Passwort ein:");
fgets(Wort,sizeof(Wort),stdin);
if(Wort=="Hallo")
printf("Sehr gut, das Passwort war richtig!");
else
printf("War wohl nix");
}

Das Problem ist das wenn ich das Programm aufrufe und das richtige Passwort (Hallo) eingebe, trotzdem die "else" meldung kommt!

Woran liegts?
 
versuchs mal so:
Code:
#include <stdio.h>

char Wort[6];

int main()
{
printf("Gib das Passwort ein:");
fgets(Wort,sizeof(Wort),stdin);
if(Wort=="Hallo")
{
  printf("Sehr gut, das Passwort war richtig!");
}
else
{
  printf("War wohl nix");
}
}
 
du kannst keine arrays mit einem == vergleichen. Wort ist nur die adresse des 1. elements des arrays, also Wort[0]. hmm, in c muss man wohl jedes einzelne element überprüfen. naja, zum glück gibt's für sowas in c++ stings :D

und wieder ein paar kleine tipps:
- variablen schreibt man klein
- wenn du int main schreibst, sollte die main auch einen wert zurückgeben (und wehe es fängt jetzt wieder einer mit nem implizitem return an ;) )
- globale variablen wann immer möglich verhindern (kann sein, dass du noch nicht soweit bist, dann ist es so in ordnung; für den anfang jedenfalls)
- der rest der fehler ist wohl in c noch standard gewesen, da sag ich jetzt mal nix dazu

ich hoffe du beherzigst diese tipps, sie werden dir das leben mit komplexeren programmen erleichtern.

mfg,
pacman
 
Hi,

So funktioniert es (strcmp aus der string.h liefert bei Übereinstimmung 0 zurück.):

Code:
#include <stdio.h>
#include <string.h>


char Wort[6];

int main()
{
printf("Gib das Passwort ein:");
fgets(Wort,sizeof(Wort),stdin);
if(strcmp(Wort,"Hallo") == 0)
printf("Sehr gut, das Passwort war richtig!");
else
printf("War wohl nix");

}
 
Danke für eure Erklärungen...aber keiner eurer Codes funzt...ich glaub ich fang doch lieber gleich mit C++ an, wenn so viel einfacher/besser ist....

Unterscheidet sich das stark von C? also, kann ich wenn ich C++ kann auch C Quellcodes entziffern? Ihr wisst was ich mein...
 
mein tipp war: kuck dir beides an und entscheide dich dann. aber als anfänger wird deine wahl wohl auf c++ fallen :)

zu deiner frage:
c++ ist voll kompatibel mit c code, mache sprechen sogar von einer erweiterung der sprache c. es ist aber genau genommen eine neuentwicklung, die eben mit c kompatibel ist. in (fast) jeder sprache gibt es gewisse struckturen, die einem immer wieder begegnen werden. zum bsp. wirst du auch in c++ schleifen, variablen und eine main finden :D. der grundaufbau ist also der gleiche, nur arbeitest du ein c++ nicht mit dubiosen funktionen wie malloc oder printf auf die man sich nicht wirklich verlassen kann, sonder mit objekten. am anfang wirst du überhaupt nicht bemerken, dass du schon objekte benutzt, denn auch ein cout ist schon ein objekt und sieht gar nicht kompliziert aus ;)

und du solltest dir wirklich ein buch kaufen, oder eine struckturierte anleitung besorgen, wo alles von anfang an erklärt wir. mit solchen codeschnippseln wirst du nicht weit kommen und kaum einen guten programmierstil erlernen.

ich hoffe mal, dass das eine kompetente antwort war, weil ich die eingentlich nur wegen der wut über steam geschrieben hab ;)

mfg,
pacman
 
PS: dein prog in c++:

Code:
#include <string>  
#include <iostream>    
using namespace std;     

 int main()    

{  	

string wort;   
 	
cin >> wort;    
	
if (wort == "Hallo") 
   {  		
        cout << "Sehr gut, das Passwort war richtig!" << endl;  	
    }    
	
else    	
    {  		
        cout << "War wohl nix" << endl;  	
    }    

return 0; 

}


jetzt nicht erschrecken, so würde es ein schon etwas fortgeschrittener programmierer machen. es geht auch einfacher, aber dann eben nicht mehr nach c++ standard
 
Vielen Dank!!!

Also, ich werd mir vielleicht schon ein Buch kaufen. Aber für den Anfang hab ich hier ein tut, das ganz gut aussieht, jede zeile wird einzeln erklärt etc. nur wenn ich versuche das zu kompillieren gibts immer fehler! Ich benutze dazu den g++, ich progge lieber in Linux *g*

Also, so sieht der Hello world code aus:

Code:
#include <iostream> 
/* vorher stand da <iostream.h> aber der Compiler meinte das wär nix...*/
void main()
{
cout<<"Hallo, Welt!"<<endl;
}

Was stimmt da nicht!????

Wenn ich einfach nur

Code:
#include <iostream>
int main()
{
}

Mache gehts, nur wenn ich das obige mache (egal ob void oder int) kommt die meldung "cout undeclared (first use in this function)....." und so weiter....argh also mit C hat immer alles geklappt!
 
Liegt daran das du "using namespace std;" vergessen hasst. Versuche es so:

Code:
#include <iostream>    
using namespace std; /* hasste vergessen */

int main()
{
     cout<<"Hallo, Welt!"<<endl;
     
     return 0;
}
 
Zurück
Oben