Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Scheiss C-strings!

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 <
010
27.10.2003, 13:38 Uhr
HRI-Dummy



Scheisse, hab beides erfolglos ausprobiert. Wenn ich mit scanf bis zum newline einlesen will, erkennt er das newline nicht (hab beides ausprobiert, 10 und 13).
Die fflush Methode bewirkt ueberhaupt nichts.
So langsam frage ich mich ob es hier irgendwo eine versteckte Kamera gibt...
Hat vielleicht noch irgendjemand eine Idee? Es muss doch moeglich sein einen String mit mehreren Woertern einzulesen verdammt!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
27.10.2003, 13:52 Uhr
0xdeadbeef
Gott
(Operator)


Zeig mal ein bisschen mehr Code her. Ich kann den Fehler so nicht reproduzieren.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
27.10.2003, 13:56 Uhr
geissbock




C++:
#include <stdio.h>

main()
{
char c [100];
gets (c);
printf("eingelesener string: %s",c);
}


kannst das ja mal ausprobieren. das sollte eigentlich funzen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
27.10.2003, 14:23 Uhr
HRI-Dummy



@Geissbock, das habe ich auch schon ausprobiert, funktioniert nicht. Das Programm wartet nicht auf Eingabe.


@0xdeadbeef, das ist eigentlich schon die ganze Prozedur, kann mir nicht vorstellen, dass das hilft.


C++:
char choice[10];
char text[1024];

printf("Wollen Sie selbst ein SQL-Statement eingeben?");

if (choice[0] == 'y')
{
       printf("Bitte geben Sie Ihr Statement ein (ohne ';' am Ende!)")
       fgets(text,1024,stdin);
       sprintf(self->query,text);
/* wenn ich es gleich in 'self->query' schreibe, funktioniert es auch nicht */
       printf("%s\n",self->query);
}




Nach der Aufforderung das Statement einzugeben wartet das Programm nicht auf Eingabe, sondern macht einfach weiter und gibt mir dann eine Fehlermeldung weil der Query leer war.
fflush bewirkt auch nichts, wie gesagt, kann mir echt nicht vorstellen was das ist.

--edit Pablo. [ code ] in [ cpp ] --

Dieser Post wurde am 27.10.2003 um 15:08 Uhr von Pablo Yanez Trujillo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
27.10.2003, 14:51 Uhr
HRI-Dummy



sorry, hab eine Zeile code vergessen, so sieht es richtig aus:


C++:
char choice[10];
char text[1024];

printf("Wollen Sie selbst ein SQL-Statement eingeben?");
scanf("%s",choice)

if (choice[0] == 'y')
{
       printf("Bitte geben Sie Ihr Statement ein (ohne ';' am Ende!)")
       fgets(text,1024,stdin);
       sprintf(self->query,text);
/* wenn ich es gleich in 'self->query' schreibe, funktioniert es auch nicht */
       printf("%s\n",self->query);
       DBconnection_query(self);
}
else
{
       DBconnection_getCriteria(self);
}



--edit Pablo. [ code ] in [ cpp ] --

Dieser Post wurde am 27.10.2003 um 15:09 Uhr von Pablo Yanez Trujillo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
015
27.10.2003, 16:36 Uhr
0xdeadbeef
Gott
(Operator)


Vielleicht besser so:

C++:
printf("Wollen Sie selbst ein SQL-Statement eingeben? ");
fgets(choice, 10, stdin);


Das hier läuft jedenfalls:

C++:
#include <stdio.h>

main() {
  char c[10], t[1024];
  printf("Eingabe: ");
  fgets(c, 10, stdin);

  if(c[0] == 'y') {
    fgets(t, 1024, stdin);
    puts(t);
  }
}


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
016
27.10.2003, 16:51 Uhr
HRI-Dummy



0xdeadbeef ich koennte Dich knutschen! (rein platonisch versteht sich)
Es funktioniert endlich, so merkwuerdig das auch ist, aber es funktioniert!

Danke, tausendmal!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
017
27.10.2003, 18:02 Uhr
virtual
Sexiest Bit alive
(Operator)


Das ist überhaupt nicht merkwürdig:
das scanf liest das Newline nicht mit. Du hättest auch schreiben können scanf("%s\n", c);
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: