ZAhlen einlesen in C?

3 Antworten

int zahlen[10];
for (int i = 0; i < 10; i++)
{
   scanf(" %d", &zahlen[i]);
}

So kann man das z.B. machen.

Woher ich das weiß:eigene Erfahrung

WhiteSnoww 
Fragesteller
 20.02.2020, 17:02

Kann man was anderes als scanf nehmen wir dürfen es nicht verwenden

0
whgoffline  20.02.2020, 17:04
@WhiteSnoww

int zahl = 0;

 cout << "Zahl eingeben: ";

 cin >> zahl;

 cout << "Die Zahl ist: " << zahl << endl;

0
SirNik  20.02.2020, 17:05
@WhiteSnoww

Soll es denn überhaupt vom Benutzer eingegeben werden? Oder was heißt "einlesen" bei dir?

0
WhiteSnoww 
Fragesteller
 20.02.2020, 17:09

Wir sollen int Werte von der Konsole einlesen und in binären baum einfügen,wenn Ende eingegeben wird sollen wir den Baum ausgeben. Wie mach ich das wenn ich Ende eingibt das das Programm zum Beispiel abbricht

0
SirNik  20.02.2020, 19:25
@WhiteSnoww

Was genau meinst du mit Ende, soll "Ende" als Zeichenkette, soll Zeilenende oder Nullbyte, etc.? :)

mit gets() (oder besser fgets()) kannst du auch von der Konsole einlesen, wenn ihr scanf nicht nehmen sollt.

allerdings liefert das einen string zurück, d.h. du musst den String dann in int umwandeln (entweder du machst das selbst oder du nutzt atoi() in stdlib dafür)

mit ner while-loop kannst du prüfen, ob die Abbruchbedingung eingetroffen ist, dann kommst du raus aus der schleife und du kannst weiter machen. [Alternative: break; aber das ist nicht so schön]

0
SirNik  20.02.2020, 23:32
@WhiteSnoww

Mit strcmp bzw. besser strncmp kannst du strings vergleichen, allerdings solltest du darauf achten, dass deine Eingabe natürlich kürzer als "Ende" sein kann und du unter Umständen dann über die Grenze liest und das wäre potenzielle eine Sicherheitslücke (will dir nur die awareness geben, dass sowas nicht cool ist :) )

Denkst du du kriegst das hin mit den Tips von hier? [Alternativ zu den hier genannten Bibliotheksfunktionen kannst du diese natürlich selbst implementieren zur Übung ;) ]

0
WhiteSnoww 
Fragesteller
 21.02.2020, 15:01
@SirNik

Kann mir vielleicht doch jemand den Code schicken

0
SirNik  21.02.2020, 15:55
@WhiteSnoww
while (strlen(number) != endeSize && strncmp(number, endeString, endeSize) != 0)
{
    printf("Eine Zahl bitte:");
    fgets(number, digitCountOfInt, stdin);
    numbers[i++] = atoi(number);
}

So in etwa kann das aussehen.

1
WhiteSnoww 
Fragesteller
 21.02.2020, 15:58
@SirNik

Und wie kann ich dann abbrechen bei Eingabe von ende

0
SirNik  21.02.2020, 17:02
@WhiteSnoww

Das ist in dem Code schon drin (endeString ist "Ende"; in number liest du ein und dann wird verglichen, ob das eingelesene gleich "Ende" ist. Dadurch ist die Schleifenbedingung nicht mehr wahr und die Schleife wird verlassen

1
SirNik  23.02.2020, 10:43
@SirNik

bzw. schau dir mal die Zeile

char endeString = "ende"

an und überlege dir, ob da nicht was fehlt.

0
SirNik  23.02.2020, 17:37
@WhiteSnoww

Vergiss nicht, dass Strings in C char-arrays sind. Also markiers als array und probier es dann nochmal

1
WhiteSnoww 
Fragesteller
 24.02.2020, 08:58
@SirNik

Was macht oder was bedeutet überhaupt strncmp

0
SirNik  24.02.2020, 12:31
@WhiteSnoww

string compare. Das vergleicht, ob zwei Strings gleich sind (=0; andere Ergebnisse: <0 und >0, hierzu kannst du gerne googeln)

Der Unterschied zwischen strcmp und strncmp ist, dass bei strncmp zusätzlich eine Anzahl n mitgegeben werden muss, wieviele Zeichen verglichen werden sollen. Das ist sicherer, da du als Programmierer die Länge angeben kannst und somit vermeiden kannst, dass über die Stringgrenzen hinweg verglichen wird, falls ein String z.b. nicht mit dem Nullbyte abgeschlossen ist.

0

Zahlen liest man mit scanf() - das Array baut man aussen drum herum und die for liefert den Index.

int zahl = 0;
cout << "Zahl eingeben: ";
cin >> zahl;
cout << "Die Zahl ist: " << zahl << endl;
Woher ich das weiß:Studium / Ausbildung – Informatikstudent

SirNik  20.02.2020, 17:08

Das wäre valides C++, aber kein C.

2
WhiteSnoww 
Fragesteller
 21.02.2020, 06:52

Hmm ja danke für den Tipp, wenn ich Hilfe brauche melde ich mich

0