Dateiverarbeitung in C - Seite 2

Seite 2 von 2 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/dateiverarbeitung_in_c_80839/page_2 - zur Vollversion wechseln!


fresserettich schrieb am 02.06.2003 um 19:41

Zitat von Ringding
Es 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
:bash:³
1. war es in der schule und der lehrer hatte selber probs, da er mit unix auch noch nicht so viel am hut hatte ;)
2. hat des keiner gekonnt ;)
3. da luki wollte eine lösung erarbeiten mit einer kombination von c, jedoch brauchten wir dazu eben dieses programm
nur gut dass es schon wieder mindestens 3 monate her ist wo wir die dateiverarbeitung im schnellverfahren durchgeamcht haben (ich glaub 2-3 übungen) und wir brauchen des ja täglich bei der vererbung ;)
wir wollten einfach nur ein wenig hilfe, da des hier sonst auch kein problem ist (was gerade ich erfahren durfte, habe zur zeit ärgere probs mit graka etc.) ein bisschen hilfe zu erwarten
nur wenn dann solche replays kommen wie es sind 5 zeilen dann bringt uns des nix
bin jetzt ca. 4 1/2 monate hier aktiver nutzer und hatte bis jetzt wirklich ein super eindruck von diesem forum, nur die aktion heute war ärger lame
vielleicht sind doch nicht alle so w00t in diesem forum wie ich gedacht hatte
@all die noch immer flamen wollen --> per pm sonst :fresserettich:


Ringding schrieb am 02.06.2003 um 20:28

"Ich such wen, der mir das macht" klingt aber nicht sehr nach ein wenig Hilfe.


aNtraXx schrieb am 02.06.2003 um 21:28

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.


Ringding schrieb am 02.06.2003 um 23:24

Zitat
und dann suchst dir noch das zeichen für linefeed aus der asciitabelle.

Das muss man nicht suchen, das ist '\n'.


M.I.P.S. schrieb am 03.06.2003 um 08:54

Würd eher

while(fgets(s, LINE_MAX, file) != EOF)
counter++;


vorschlagen.


Ringding schrieb am 03.06.2003 um 09:10

fgets liefert nicht EOF sondern NULL. Außerdem funktioniert es so nicht mit sehr langen Zeilen.


aNtraXx schrieb am 03.06.2003 um 10:22

Zitat von Ringding
Das muss man nicht suchen, das ist '\n'.


stimmt :D damn.... hab ich glatt vergessen ;).


fresserettich schrieb am 03.06.2003 um 12:04

Zitat von Ringding
fgets liefert nicht EOF sondern NULL. Außerdem funktioniert es so nicht mit sehr langen Zeilen.
naja laut unseren unterlagen liest fgets bis LF oder EOF aber egal
des prob ist ja schon lange erledigt


atrox schrieb am 03.06.2003 um 12:34

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


M.I.P.S. schrieb am 03.06.2003 um 12:38

Zitat von Ringding
fgets liefert nicht EOF sondern NULL. Außerdem funktioniert es so nicht mit sehr langen Zeilen.

@EOF: Oops, my fault, liefert NULL.

@Lange Zeilen: Dafür verwendet man ja LINE_MAX. Ist in der limits.h definiert und gibt an, wie lange eine Zeile im System maximal sein kann. Die Steigerung dafür, für die ganz pedantischen, ist sysconf() aus der unistd.h für die Auswertung der maximalen Zeilenlänge zur Laufzeit.


Ringding schrieb am 03.06.2003 um 13:17

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