"We are back" « oc.at

Dateiverarbeitung in C

Luki 02.06.2003 - 13:00 1420 25
Posts

fresserettich

Here to stay
Registered: Jul 2002
Location: hier
Posts: 5478
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

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
"Ich such wen, der mir das macht" klingt aber nicht sehr nach ein wenig Hilfe.

aNtraXx

trailer park king
Avatar
Registered: Apr 2002
Location: Linz
Posts: 6906
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

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
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.

Big d00d
Avatar
Registered: Mar 2002
Location: On the inside
Posts: 324
Würd eher

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


vorschlagen.

Ringding

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
fgets liefert nicht EOF sondern NULL. Außerdem funktioniert es so nicht mit sehr langen Zeilen.

aNtraXx

trailer park king
Avatar
Registered: Apr 2002
Location: Linz
Posts: 6906
Zitat von Ringding
Das muss man nicht suchen, das ist '\n'.


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

fresserettich

Here to stay
Registered: Jul 2002
Location: hier
Posts: 5478
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

in fairy dust... I trust!
Avatar
Registered: Sep 2002
Location: HTTP/1.1 404
Posts: 2782
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.

Big d00d
Avatar
Registered: Mar 2002
Location: On the inside
Posts: 324
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

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
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.
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz