Buchstabe einer Datei als Variable speichern
-
Da fehlen immer noch die Klammern um das while, dann sollte es gehen.
So wird nur die erste Anweisung nach dem while ausgeführt und es kommt
natürlich doppelt.
-
ne, geht leider nicht
wenn ich eine klammer um das while mach, gibts ne fehlermeldung
und wenn ich welche um die if-anweisungen mache, dann wird die ausgabe wieder länger
-
Poste Code ...
-
hier:
#include <stdio.h> #include <stdlib.h> int main(void) { FILE *quelle; int c; char datei[20]; long pos = 0; (quelle=fopen("datei.txt","a+")); while( (c=getc(quelle)) != '*') {putc(c,stdout);} fseek(quelle, -2L, SEEK_END); while( (c=getc(quelle)) != EOF) {if (c == 'b') printf("gleich"); if (c != 'b') printf("ungleich");} }
-
zefix, mach doch mal diese §%§&§%-Klammern rein, dann geht's:
while( (c=getc(quelle)) != EOF)[b]{[/b] {if (c == 'b') printf("gleich"); if (c != 'b') printf("ungleich"); [b]}[/b]
-
aber das sind doch die gleichen wie ich hatte, nur das sie jetzt eine zeile drüber bzw. drunter stehen
das sollte doch eigentlich egal sein, wo die stehen, oder?
geht übrigens immer noch nicht.
kann es vielleicht sein, das es irgendwie am compiler/OS liegt, dass es bei mir net geht?
-
Sorry - ich gebe das jetzt auf und buche das auf Deine Ignoranz, Beratungsresistenz und Doofheit.
Lerne Word-Basic.Verplempere anderer Leute Zeit, nicht mehr meine.
-
wenn man es als beratung bezeichnet den code praktisch unverändert zurückzugeben, und zu behaupten, er funktioniere, dann kann man mich wirklich als beratungsresistent bezeichnen^^
(wenn mir jemand erklärt wieso es einen unterschied macht, ob die { am ende der zeile steht oder am anfang der nächsten zeile, dann nehm ich alles zurück (zumindest mein compiler macht da anscheinend keinen unterschied))
-
#include <stdio.h> #include <stdlib.h> int main(void) { FILE *quelle; int c; char datei[20]; long pos = 0; quelle=fopen("datei.txt","a+"); while( (c=getc(quelle)) != '*') { putc(c,stdout); } fseek(quelle, -2L, SEEK_END); while( (c=getc(quelle)) != EOF) { if (c == 'b') printf("gleich"); if (c != 'b') printf("ungleich"); } }
so hier der code bischen gescheid eingerückt... was geht jetzt nicht????
P.S.: am ende solltest noch
fclose(quelle);
machen
was passiert wenn du die erste while schleife und das fseek weg lässt? findest er dann das b?
-
BorisDieKlinge schrieb:
while( (c=getc(quelle)) != '*') { putc(c,stdout); }
besser so. ist lesbarer und provoziert keine 'assignment in condition' compiler-warnungen:
for (;;) { int c = getc(quelle); if (c == '*') break; putc (c, stdout); }
und dafür
BorisDieKlinge schrieb:
if (c == 'b') printf("gleich"); if (c != 'b') printf("ungleich");
gibts 'else'
-
Hallo,
-fricky- schrieb:
BorisDieKlinge schrieb:
while( (c=getc(quelle)) != '*') { putc(c,stdout); }
besser so. ist lesbarer und provoziert keine 'assignment in condition' compiler-warnungen:
Wenn es so geschrieben ist, dann sollte da eigentlich keine solche Warnung entstehen, welcher Compiler warnt denn hier trotzdem?
MfG,
Probe-Nutzer
-
Probe-Nutzer schrieb:
Wenn es so geschrieben ist, dann sollte da eigentlich keine solche Warnung entstehen, welcher Compiler warnt denn hier trotzdem?
naja, die klammern um die zuweisung verhindern dies. ich würde es aber trotzdem so nicht hinschreiben.
-
for (;;) { int c = getc(quelle); if (c == '*') break; putc (c, stdout); }
oder so
for(char c= getc(quelle); c != '*' ; c= getc(quelle)) putc (c, stdout);
^^
-
BorisDieKlinge schrieb:
oder so
for(char c= getc(quelle); c != '*' ; c= getc(quelle)) putc (c, stdout);
^^schwach. das 'putc' passt doch auch noch irgendwo in's for-statement mit rein.
-
BorisDieKlinge schrieb:
for(char c= getc(...
und jetzt ausnahmsweise ein ernsthafter kommentar: du solltest dir angewöhnen, hier 'int' zu nehmen. in dem speziellen fall ist es zwar egal, ob char oder int, aber trotzdem...