Fehler in Programm

Hallo!
Ich habe neu mit C angefangen und hab ein Problem.
Folgendes Programm funktioniert nur, wenn ich bei Name nur einen Buchstaben eingebe. Was muss ich an dem Programm ändern, damit ich mehrere Buchstaben eingeben kann?
Danke für eure Hilfe

#include

main()

{

char Name;
int Alter;

printf(„Dein Name?\n“);

scanf("%c",&Name);

printf(„Dein Alter?\n“);

scanf("%i",&Alter);

printf(„Name:%c\n“,Name);
printf(„Alter:%i\n“,Alter);

system(„Pause“);
return(999);
}

Hallo.

Versuch mal folgendes:

char Name[n];

for (int i=0;i

Hallo Fragewurm,

In deinem Programm sind 2 fehler:

  1. scanf("%c",&Name);
    „%c“, „c“ = Character, liest also nur ein EINZELNES zeichen ein.
    „%s“ „s“ = string würde eine Zeichenkette einlesen.

  2. char Name;
    musst du z.B. als
    char Name[100];
    deklarieren, wobei es dann zu seltsamen erscheinungen kommen kann, wenn jemand 101 oder mehr zeichen eingibt, weil dann andere variablen überschrieben werden.
    allerdings hast du die Möglichkeit das z.B. mit „%s100“ zu umgehen, also schau dir mal die Formatparameter von scanf() genau an.

MfG Peter(TOO)

Ich habe neu mit C angefangen und hab ein Problem.
Folgendes Programm funktioniert nur, wenn ich bei Name nur
einen Buchstaben eingebe. Was muss ich an dem Programm ändern,
damit ich mehrere Buchstaben eingeben kann?
Danke für eure Hilfe

#include

main()

{

char Name;
int Alter;

printf(„Dein Name?\n“);

scanf("%c",&Name);

printf(„Dein Alter?\n“);

scanf("%i",&Alter);

printf(„Name:%c\n“,Name);
printf(„Alter:%i\n“,Alter);

system(„Pause“);
return(999);
}

Ein kleiner Vorschlag:
#include

main()
{

char Name[100];
int Alter,n;
printf(„Dein Name?\n“);
gets(Name); // diese Funktion liest eine Zeichenkette eine
printf(„Dein Alter?\n“);
scanf("%i",&Alter);
printf(„Name:%s\n“,Name);
printf(„Alter:%i\n“,Alter);
system(„Pause“); // hier kannst du auch getch(); verwenden !
return 0;
}

Bei der Zeichkette musste du immer darauf achten das das letzte Zeichen ein Stringendezeichen ist /0, d.h. ein Name[100] darf nur 99 lang sein, also dem String die richtige Größe geben.

PS: mir hat ein Buch im ganz gut geholfen „C/C++ von Dirk Louis“

gruß
Shadow

Hallo Shadow,

Bei der Zeichkette musste du immer darauf achten das das
letzte Zeichen ein Stringendezeichen ist /0, d.h. ein
Name[100] darf nur 99 lang sein, also dem String die richtige
Größe geben.

PS: mir hat ein Buch im ganz gut geholfen „C/C++ von Dirk
Louis“

Dieses buch schein auch bei MS gang und gäbe zu sein …
wennman bei deinem Prgramm über 100 Zeichen eingibt, erhält man genau jene Pufferüberläufe, welche viren erlaben in Windows einzudringen … :wink:)

MfG Peter(TOO)