Motocross_M - 30
Halbprofi
(offline)
Dabei seit 01.2006
375
Beiträge
|
|
Geschrieben am: 27.02.2010 um 21:52 Uhr
|
|
hi leute,
versuch mich grad an einem kleinen programm in C mit Code::Blocks.
aber der zeigt am schluss nur des erste wort an, das man eingetippt hat (wenn man z.B. einen satz eingibt):
#include <stdio.h>
int main()
{
char text [] = " ";
printf ("Text eingeben: ");
scanf ("%s", &text);
printf ("%s", text);
return 0;
}
Ich hab keine Fußzeile nötig.
|
|
Pratsch - 32
Champion
(offline)
Dabei seit 07.2009
2821
Beiträge
|
|
Geschrieben am: 27.02.2010 um 22:42 Uhr
|
|
Zitat von Motocross_M: hi leute,
versuch mich grad an einem kleinen programm in C mit Code::Blocks.
aber der zeigt am schluss nur des erste wort an, das man eingetippt hat (wenn man z.B. einen satz eingibt):
#include <stdio.h>
int main()
{
char text [] = " ";
printf ("Text eingeben: ");
scanf ("%s", &text);
printf ("%s", text);
return 0;
}
Du meinst also er zeigt in dem Fall jetzt nur: "Text" an?
awa
|
|
Pratsch - 32
Champion
(offline)
Dabei seit 07.2009
2821
Beiträge
|
|
Geschrieben am: 27.02.2010 um 22:48 Uhr
|
|
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
main()
{
cout << "Text eingeben";
getch();
}
Kann nur C++, vil. hilfts dir ja weiter.
Hilfe zur selbsthilfe.
awa
|
|
Ketzu - 39
Experte
(offline)
Dabei seit 11.2008
1535
Beiträge
|
Geschrieben am: 27.02.2010 um 22:50 Uhr
Zuletzt editiert am: 27.02.2010 um 22:51 Uhr
|
|
Zitat von Pratsch: #include <stdio.h>
#include <conio.h>
#include <iostream.h>
main()
{
cout << "Text eingeben";
getch();
}
Kann nur C++, vil. hilfts dir ja weiter.
Hilfe zur selbsthilfe.
Er meint, sein Programm gibt "Text eingeben" aus, dann gibt man einen Text aus (der dann wieder ausgegeben werden soll), die erneute Ausgabe gibt aber nur das erste Wort aus (eben bis zum ersten Leerzeichen)
Dein Programm gibt ja jetzt nur "Text eingeben" aus.
----
Originalposter:
Dein Problem ist das %s (siehe Hier), es wird nur bis zum ersten Leerzeichen eingelesen.
Eine Meinung vertreten, heißt nicht sie zu teilen, sondern versuchen sie zu verstehen.
|
|
Pratsch - 32
Champion
(offline)
Dabei seit 07.2009
2821
Beiträge
|
Geschrieben am: 27.02.2010 um 22:51 Uhr
Zuletzt editiert am: 27.02.2010 um 22:53 Uhr
|
|
Ah, jetzt komm ich mit. So meint er das.
Edit: Du könntest dich auch mal melden.
awa
|
|
Ketzu - 39
Experte
(offline)
Dabei seit 11.2008
1535
Beiträge
|
|
Geschrieben am: 27.02.2010 um 22:53 Uhr
|
|
Der Originalposter ist vermutlich offline mitlerweile :)
Eine Meinung vertreten, heißt nicht sie zu teilen, sondern versuchen sie zu verstehen.
|
|
Pratsch - 32
Champion
(offline)
Dabei seit 07.2009
2821
Beiträge
|
|
Geschrieben am: 27.02.2010 um 22:55 Uhr
|
|
Er wird sich dan schon melden.
Schon lange kein C++/C# gemacht. :)
Muss mich mal wieder ranmachen.
awa
|
|
deine-mutter - 35
Profi
(offline)
Dabei seit 11.2005
906
Beiträge
|
|
Geschrieben am: 27.02.2010 um 22:59 Uhr
|
|
wo habt ihr eigentlich C++ als freeware her?
lass die Finger von den Drogen
|
|
Ketzu - 39
Experte
(offline)
Dabei seit 11.2008
1535
Beiträge
|
Geschrieben am: 27.02.2010 um 22:59 Uhr
Zuletzt editiert am: 27.02.2010 um 23:01 Uhr
|
|
Zitat von Motocross_M:
#include <stdio.h>
int main()
{
char text [] = " ";
printf ("Text eingeben: ");
scanf ("%s", &text);
printf ("%s", text);
return 0;
}
Zum einen noch:
char text [] = " "; sollte man mit vorsicht geniesen.
Vorzuziehen wäre es ein Array vorzudefinieren:
char text [256]; etwa.
In C gibt es keine Arraylängenüberprüfung. Wenn dein Array zu kurz ist schreibt es einfach weiter, das kann zu verschiedenen Fehlern führen.
Zum anderen:
Versuche es mit "gets(text);" statt "scanf("%s",&text);", das sollte gehen.
edit:
Zitat von deine-mutter: wo habt ihr eigentlich C++ als freeware her?
C++ ist keine Software sondern eine Programmiersprache. Die IDE die er verwendet ist Code::Blocks, vermutlich zusammen mit einem GCC Compiler für Windows/Linux. Die sind beide Freeware.
Siehe hier (codeblocks.org)
Eine Meinung vertreten, heißt nicht sie zu teilen, sondern versuchen sie zu verstehen.
|
|
deine-mutter - 35
Profi
(offline)
Dabei seit 11.2005
906
Beiträge
|
|
Geschrieben am: 27.02.2010 um 23:04 Uhr
|
|
Zitat von Ketzu: Zitat von Motocross_M:
#include <stdio.h>
int main()
{
char text [] = " ";
printf ("Text eingeben: ");
scanf ("%s", &text);
printf ("%s", text);
return 0;
}
Zum einen noch:
char text [] = " "; sollte man mit vorsicht geniesen.
Vorzuziehen wäre es ein Array vorzudefinieren:
char text [256]; etwa.
In C gibt es keine Arraylängenüberprüfung. Wenn dein Array zu kurz ist schreibt es einfach weiter, das kann zu verschiedenen Fehlern führen.
Zum anderen:
Versuche es mit "gets(text);" statt "scanf("%s",&text);", das sollte gehen.
edit:
Zitat von deine-mutter: wo habt ihr eigentlich C++ als freeware her?
C++ ist keine Software sondern eine Programmiersprache. Die IDE die er verwendet ist Code::Blocks, vermutlich zusammen mit einem GCC Compiler für Windows/Linux. Die sind beide Freeware.
Siehe hier (codeblocks.org)
danke!
lass die Finger von den Drogen
|
|
leTriomph - 37
Fortgeschrittener
(offline)
Dabei seit 07.2005
29
Beiträge
|
Geschrieben am: 27.02.2010 um 23:29 Uhr
Zuletzt editiert am: 27.02.2010 um 23:31 Uhr
|
|
Zitat von Motocross_M: hi leute,
versuch mich grad an einem kleinen programm in C mit Code::Blocks.
aber der zeigt am schluss nur des erste wort an, das man eingetippt hat (wenn man z.B. einen satz eingibt):
#include <stdio.h>
int main()
{
char text [] = " ";
printf ("Text eingeben: ");
scanf ("%s", &text);
printf ("%s", text);
return 0;
}
nimm doch einfach cin.getline(text, laenge)
|
|
pogorausch - 38
Champion
(offline)
Dabei seit 09.2005
2593
Beiträge
|
Geschrieben am: 28.02.2010 um 01:08 Uhr
Zuletzt editiert am: 28.02.2010 um 01:16 Uhr
|
|
Zitat von leTriomph: Zitat von Motocross_M: hi leute,
versuch mich grad an einem kleinen programm in C mit Code::Blocks.
aber der zeigt am schluss nur des erste wort an, das man eingetippt hat (wenn man z.B. einen satz eingibt):
#include <stdio.h>
int main()
{
char text [] = " ";
printf ("Text eingeben: ");
scanf ("%s", &text);
printf ("%s", text);
return 0;
}
nimm doch einfach cin.getline(text, laenge)
Schön, dass das nicht C ist, sondern C++.
Die C-Funktion heißt gets und ist in stdio.h. Die Funktion nimmt eine Adresse, wo der Eingabestring hingeschrieben werden soll.
Sprich: Du machst ein Array:
char input_buffer[80];
Die Länge solltest du dabei so wählen, dass du keine längeren Texte eingibst. (Das ist schon bei deinem Originalprogramm falsch; du überschreibst da beliebige Stellen im Speicher).
Dann rufst du die Funktion auf:
gets(input_buffer);
Und kannst den String mit printf oder puts wieder ausgeben.
EDIT:
warning: the `gets' function is dangerous and should not be used.
… sagt mein gcc. Wegen dem fehlenden bounds-check wahrscheinlich.
Ist zwar auch nicht schlimmer als scanf, aber wers sicher haben will, kann ja fgets auf stdin anwenden.
Vegan warrior for life, so FUCK THE LAW!
|
|
Motocross_M - 30
Halbprofi
(offline)
Dabei seit 01.2006
375
Beiträge
|
|
Geschrieben am: 28.02.2010 um 20:36 Uhr
|
|
okay danke leute ^^
Ich hab keine Fußzeile nötig.
|
|