URL: https://www.overclockers.at/coding-stuff/dateiverarbeitung_in_c_80839/page_2 - zur Vollversion wechseln!
Zitat von RingdingEs hat hier keiner Lust, die Hausaufgaben der anderen zu machen. Wenn wer damit nicht zurecht kommt, dann muss er sich halt mehr anstrengen, damit wird ihm niemand weiterhelfen können. Schließlich haben Hausaufgaben den Zweck, dass man das Gemachte nachher kann.
Wenn der Poster zeigt, dass er schon Mühe investiert hat und trotzdem nicht weiterkommt, dann wird ihm auch gern geholfen.
Siehe auch http://www.overclockers.at/showthre...;threadid=52088
"Ich such wen, der mir das macht" klingt aber nicht sehr nach ein wenig Hilfe.
schau mal in der msdn library falls du dass hast nach
FILE *fp // Filepointer
damit sollte es schon zu schaffen sein. und dann suchst dir noch das zeichen für linefeed aus der asciitabelle. setzt den filepointer aufs erste zeichen SEEK. musst nicht unbedingt. dann liest du per zählschleife einfach zeichen um zeichen ein und prüfst jedesmal ob der eingelesene wert mit dem aus der ascii-tabelle übereinstimmt. wenn ja zählvariable + 1. ansonsten weiter. dass ganze in eine whileschleife verpackt mit abbruchkritieriem EOF.
mit der beschreibung sollte es doch schon ganz leicht gehen.
Zitatund dann suchst dir noch das zeichen für linefeed aus der asciitabelle.
Würd eher
while(fgets(s, LINE_MAX, file) != EOF)
counter++;
vorschlagen.
fgets liefert nicht EOF sondern NULL. Außerdem funktioniert es so nicht mit sehr langen Zeilen.
Zitat von RingdingDas muss man nicht suchen, das ist '\n'.
naja laut unseren unterlagen liest fgets bis LF oder EOF aber egalZitat von Ringdingfgets liefert nicht EOF sondern NULL. Außerdem funktioniert es so nicht mit sehr langen Zeilen.
Code:atrox@idefix:/home/atrox > cat lc.c #include <stdio.h> // funktioniert nicht, da fgets nach dem buffer vollwerden stehen bleibt, und nicht bis \n weiterliest void main(void) { char s[2]; int counter=0; while (fgets(s,2,stdin)) counter++; printf("%d\n",counter); }atrox@idefix:/home/atrox > lc < /etc/passwd 7258 atrox@idefix:/home/atrox > wc -l /etc/passwd 132 /etc/passwd atrox@idefix:/home/atrox > wc -c /etc/passwd 7258 /etc/passwd
Zitat von Ringdingfgets liefert nicht EOF sondern NULL. Außerdem funktioniert es so nicht mit sehr langen Zeilen.
Lame. Die Zeilen können ja trotzdem so lang sein, schließlich gibt es keine Möglichkeit, das zu verhindern. Und dann funktioniert es mit fgets nicht, mit fgetc und zeichenweise auf \n prüfen hingegen schon.
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025