newline in Konsole bewirken
-
hallo
ich lerne gerade Ansi-C programmieren unter Linux. Ich bin auf ihre Hilfe angewiesen.
ich habe den folgenden Code :#include <stdio.h> #include <stdlib.h> #define MAX 200 int main(void) { char txt[MAX]; printf("Bitte geben Sie Ihren Text ein : "); fgets(txt, MAX, stdin); printf("%s",txt); return EXIT_SUCCESS; }es funzt einwandfrei.Aber beim Schreiben vom Text habe das Pb., wenn ich auf ENTER drücke dann wird das Programm ausgeführt bzw ausgegeben. Ja es ist so prog_.
Meine Frage lautet: wie kann ich in meinem Text in der Konsole auch kurze Zeilen eingebe also nicht bis das automatisch gemacht wird. d.h. wie kann ich ein "newline" eingebe ohne auf ENTER zu drücken damit da programm nicht ausgeführt wird und natürlich auch so gespeichert wie eingegeben hätte.
ich hoffe das ich verständlich ausgedruckt habe
vielen vielen DANK
-
Hallo
lilian schrieb:
hallo
ich lerne gerade Ansi-C programmieren unter Linux.Ist nicht böse gemeint, aber die Profis für C sind im C-Forum und das hier ist ein C++-Forum.
chrische
-
Ein Newline ist ein '\n'.
Also:printf("Das ist Zeile 1.\nDas ist Zeile 2.");
-
SeppSchrot schrieb:
Ein Newline ist ein '\n'.
ja aber nur in Dateien nicht in der stdin also in der Konsole. meine Frage war vielleicht schlecht formuliert also nochmal: wie kann ich in der Konsole mehrere Zeilen so eingeben bevor ich sie einlese:
hallo Welt.
hallo Welt hallo Welt hallo Welt hallo Welt.
hallo Welt.vielen DANK
-
Du könntest die Zeichen einzeln per fgetc() einlesen (in einer Schleife) und dann selber nach DEINEM Textende-Zeichen suchen:
for(i=0;i<MAX;++i) { int c=fegtc(stdin); if(c==EOF || c=='*') break; txt[i]=c; } txt[i]='\0';//Stringende anhängen(unter C++ geht auch getline() - dort kannst du optional eine Ende-Kennung mitgeben)