-
newline
hi
ich habe ein Problem unzwar will ich mit folgendem Code eine Datei erstellen bezieungsweise weiterbeschreben was auch ganz gut klappt aber ich möchte das am ende der eingabe immer ein Newline ist aber ich weis nicht wie hier der Code:
PHP-Code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void) {
int c;
FILE *printdata;
if((printdata=fopen("usr.txt","a+"))==0) {
printf("Fehler beim öffnen der Datei!");
exit(EXIT_FAILURE);
}
else {
printf("bitte geben sie ihren Namen ein (beenden sie die Eingabe mit einer #):");
while ((c=getc(stdin))!=EOF) {
putc(c,printdata);
}
putc('\n',printdata); /iher soll ein Newlne Zeichen hin
printf("Datei wurde erfolgreich geschrieben");
}
return EXIT_SUCCESS;
}
mfg cyber_gh0st
-
Moin
Evt mit endl ?
Code:
putc(endl,printdata);
Edit: oh das gibts nich in C oder? -.- sry
-
"\r\n"?->bei win xp sp 3 klapptet
achso das mit dem # beendet die eingabe funktioniert unter win nich.
selftested
-
printf einfach ein \n \r oder schreib ein endl; auf den stream
std::cout << endl;
-
@cyber_ghost
Code:
while ((c=getc(stdin))!=EOF) {
macht wenig Sinn, da stdin End-Of-File (EOF) nie erreichen wird (es sei denn du benutzt Pipes um einen Dateistream in stdin umzuleiten...)
Versuch' es mal mit:
Code:
while ((c=getc(stdin))!='\n') {
mfG. BlackBerry
-
Afaik ist in windows ^Z ein EOF also wenn du den sendest solltest der loop guard false sein ?
-
Wer macht das schon?
cyber_ghost wollte sicher, dass der Benutzer seinen Namen eingibt und dann Enter drückt.
Außerdem fällt das mehr unter Pipes benutzen - also Eingabemanipulation.
-
das mit endl klappt nicht gibts nur in C++ ich möchte aber reines C Programmieren (im Moment)
der Code sieht so aus:
PHP-Code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void) {
int c;
FILE *printdata;
if((printdata=fopen("usr.txt","a+"))==0) {
printf("Fehler beim öffnen der Datei!");
exit(EXIT_FAILURE);
}
else {
printf("bitte geben sie ihren Namen ein:");
while ((c=getc(stdin))!='\n') {
putc(c,printdata);
}
putc(endl,printdata);//<--- KLAPPT NICHT suche was anderes (reines C) :\
}
return EXIT_SUCCESS;
}
ich brauche etwas was ich für endl einsetzen kann damit in usr.txt nach der Eingabe eine neue Zeile angefangen wird...
mfg cyber_gh0st
-
endl = \r\n
-->
puts("\r"); // puts fügt automatisch ein \n hinzu
printf("\r\n"); // selbsterklärend
putc('\r', stdout);
putc('\n', stdout); // einzeln
-
das machst ja in linux dauernd nur das es da halt ctrl+d ist