Zum Inhalt springen

Mal ne Newbie-Frage zur Zuweisung.....


Empfohlene Beiträge

Geschrieben

Hallo,

bin gerade mal in die C-Programmierung eingestiegen und hab direkt mal ne Frage :

Ich möchte über ne Eingabe z.b. das berühmte "Hallo Welt" einlesen und wieder ausgeben.

Dazu habe ich folgenden Quelltext erstellt :

#include <stdio.h>

void main()

{

char txt[20];

printf("Eingabe:");

scanf ("%s",&txt);

printf(txt);

}

Nun gebe ich dann "Hallo Welt" ein oder auch nen Satz wie "Mein erstes Programm" und das einzige was er ausgibt ist "Hallo" oder "Mein".

Es scheint, als würde das Leerzeichen zum nächsten Wort als Ende der Eingabe betrachtet ?!?!

Woran liegt das und wie kann ich das lösen bzw. wie muß ich die Variable festlegen, damit das so klappt wie ich das möchte ?!?

Danke schonmal,

Flori

Geschrieben

Jo, ich bins nochmal......

Hab diese erste kleine Hürde geschafft und mein Problem gelöst..... ;)

Die Funktion gets() ist wohl besser in meinem Proggi als scanf(). Damit gehts problemlos mit dem Einlesen von Sätzen mit Leerzeichen oder Tabs !

Melde mich dann mal wieder, wenns neue Probs gibt.... :D

->> Hier kann dann wohl zugemacht werden von meiner Seite aus. :)

Flori

Geschrieben

Ich glaube, das Problem liegt an dem Adresseoperator % in scanf(...).

Da du das Array ohne [] angibt wird automatisch die Adresse zurückgegeben.

Das ist allso doppelt.

Ich bin der Meinung, das da der Fehler liegt.

Normalerweise hat scanf kein Problem mit Leerzeichen.

Original geschrieben von Flori

Hallo,

#include <stdio.h>

void main()

{

char txt[20];

printf("Eingabe:");

scanf ("%s",&txt);

printf(txt);

}

Geschrieben

Also ich habe auf dem Weg zur Lösung des Problems diese Seite gefunden : hier .

Dort steht unter anderem :

Bei der Eingabe von Zeichenketten mittels der Funktion scanf() ist noch zu beachten, dass zwar die ENTER-taste die Eingabe beendet, die Übernahme der Zeichenkette aber nur bis zu einem Tabulator oder Zwischenraum erfolgt. Taucht also z.B. ein Zwischenraum im Eingabestrom auf, wird nur der Text bis zum Zwischenraum an die Stringvariable übergeben, der Rest der Eingabe (ab dem Zwischenraum) bleibt im Eingabepuffer stehen. Soll also ein ganzer Satz von der Tastatur an einen String übergeben werden, ist dies besser mittels der Funktion gets() zu erledigen!

Zudem habe ich auch die Art und Weise des Quelltexts ausprobiert wie du ihn mir gezeigt hast und es klappte auch nicht wie gewünscht.

Aber trotzdem danke und vielleicht hat ja noch einer ne Meinung zu dem Thema hier.

Bis dahin,

greetz

Flori

Geschrieben

Es ist in der Tat so, daß wenn man einen String mit scanf einliest man das '&' weglassen muß. scanf erwartet einen Zeiger auf den String und genau dies ist ja schon das Array.

Bsp:

char str[25];

scanf("%s", str);

Geschrieben

Also habs gerade nochmal ausprobiert. Es funzt bei mir auch ohne "&" nicht.

Irgendwie gibt mir die Seite auch recht, daß es mit dem gets() wohl besser geht - und es ist auch so. Das wird da ja nicht umsonst stehen..... ;)

Trotzdem nochmal Danke !

Flori

Geschrieben

Ok, eins hab ich vergessen: für scanf endet die Eingabe mit einem Whitespace. Bei 'Hallo Welt' endet die Eingabe also nach dem 'Hallo' wegen des Leerzeichens. Für solche Strings ist gets die bessere Wahl.

Geschrieben
Original geschrieben von dr.disk

Ok, eins hab ich vergessen: für scanf endet die Eingabe mit einem Whitespace. Bei 'Hallo Welt' endet die Eingabe also nach dem 'Hallo' wegen des Leerzeichens. Für solche Strings ist gets die bessere Wahl.

GENAUUUU! :)

Diese Problematik meinte ich. Also lag ich doch gar nicht so verkehrt ! *freu* :D

Dann sind wir also bezüglich Leerzeichen (Whitespaces) doch einer Meinung ! *händeschüttel* ;)

Thx a lot,

Flori

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...