File Zeilenweise ausgeben

Post Reply
Message
Author
bap

File Zeilenweise ausgeben

#1 Post by bap »

Wie kann ich ein File Zeilenweise ausgeben und dabei jede Zeile nummerieren??

das hab ich bis jetzt:
#include <stdio.h>

int main()
{
int i;
FILE *datei;
datei=fopen("test.txt","r");
if(datei!=NULL){

for(i=0;!feof(datei); i++){

while((i=fgetc(datei))!= EOF)
putchar(i);
}

}
else
printf("Konnte Datei nicht finden bzw. öffnen!
");
getchar();
return 0;
}

Sulu

Re: File Zeilenweise ausgeben

#2 Post by Sulu »

Hi bap!

Würde das so machen:


int main()
{
int i;
FILE *datei;
char zeile[1024];

/* atempt to open file test.txt */
datei=fopen("test.txt","r");

/* error message and PGM-end if file-open failed */
if(datei==NULL){
printf("fehler beim öffnen der Datei test.txt
");
exit(-1);
}



i = 0;
while((i=fscanf(datei,"%s",zeile))!= EOF)
{
printf("%d %s
",i,zeile);
i++;
}

if(i==0)
{
printf("Hmmm File test.txt existiert, scheint aber leer zu sein !?
");
}

/* hit space to end program */
printf("ende mit <space>");
getchar();
return 0;
}


Alle Klarheiten beseitigt ??

Gruss
Sulu

Sulu

Re: File Zeilenweise ausgeben

#3 Post by Sulu »

Hi bap !

Kleine Korrektur.
Das printf-statement zur Ausgabe der Zeilen ist nicht richtig.

Richtig wäre:
printf("%d %s
",i,zeile);
Aha.
Das Board zeigt die Zeichensequenz Backslash + 'n' nicht richtig an.
Nach %s im printf-statement gehört unbedingt ein Backslash mit einem nachfolgenden n hinein. Ansosnten fehlen die Zeilenumbrüche und Du siehst alles in einer "Wurscht"

Gruss
Sulu

bap

Re: File Zeilenweise ausgeben

#4 Post by bap »

danke.

einen Bug hats noch.
es nummeriert mir die Zeilen nicht richtig.

Sulu

Re: File Zeilenweise ausgeben

#5 Post by Sulu »

Gern geschehen.

Mit dem Bug werde ich leben können <img src="http://www.pl-forum.de/UltraBoard/Images/Wilk.gif" border="0" align="middle">


Gruss
Sulu

bap

Re: File Zeilenweise ausgeben

#6 Post by bap »

ich nicht <img src="http://www.pl-forum.de/UltraBoard/Images/Wilk.gif" border="0" align="middle">

bap

Re: File Zeilenweise ausgeben

#7 Post by bap »

he diese programm gibt garnicht den Text Zeilenweise aus sondern Wortweise..
was muss ich machen damit es mir den Text Wortweise ausgiebt??

Jochen

Re: File Zeilenweise ausgeben

#8 Post by Jochen »

Nur am Rande: Als Programmierübung ist das ja in Ordnung, aber wer so was braucht, nimmt "nl":

nl datei

Oder lieber als awk-Skript?

awk '{printf ("%d\t%s
",NR,$0)}' datei

Jochen

Jochen

Re: File Zeilenweise ausgeben

#9 Post by Jochen »

Achje, die Backslashes im Board...

awk '{printf ("%d\<!--no-->t%s\<!--no-->n",NR,$0)}' datei


Jochen

bap

Re: File Zeilenweise ausgeben

#10 Post by bap »

#include <stdio.h>

void abbruch(void);
int zeile;

int main(int argc, char *argv[])
{
char puffer[128];
FILE *textdatei;

if (argc < 2) {
printf("Kein Argument angegeben
");
getchar();
return 1;
} // if

if ((textdatei = fopen (argv<font size="1">, "r" )) == NULL) {
fprintf(stderr, "Sh*** ein Fehler beim oeffnen der datei %s ist aufgetreteten!",argv<font size="1">);
getchar();
return 1;
} // if

while (fgets(puffer,128,textdatei) != NULL) {
fprintf(stdout, "%4d:\t%s", zeile++,puffer);
} // while

fclose(textdatei);
getchar();
return 0;

} // main



so gehts

Sulu

Re: File Zeilenweise ausgeben

#11 Post by Sulu »

"he diese programm gibt garnicht den Text Zeilenweise aus sondern Wortweise.. was muss ich machen damit es mir den Text Wortweise ausgiebt??"


Ups.

Das kann sein.
Ich hab das mal so schnell aus der Hand geschüttelt.

Es kann durchaus sein das fscanf nur ein Wort liest.
=> Wir brauchen was schlaueres.
Oder wir bringen fsanf dazu dass er Zeilen liest.

Hmmmm...

fgets() müsste auch gehen.
Der liest bis zum nächsten Zeilenumbruch oder bis EOF.


Probier mal das:

i = 0;
while(!feof(datei))
{

zeile = fgets(datei);
printf("%d %s
",i,zeile);
i++;
}


Werden schon dahinter kommen.

Gruss
SULU

Descartes

Re: File Zeilenweise ausgeben

#12 Post by Descartes »

@Jochen
> Nur am Rande: Als Programmierübung ist das ja in Ordnung, aber wer so was braucht,
> nimmt "nl":
> nl datei
> Oder lieber als awk-Skript?
> awk '{printf ("%d\t%s ",NR,$0)}' datei

oder

cat -n DATEINAME

bap

Re: File Zeilenweise ausgeben

#13 Post by bap »

<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">#include <stdio.h>

void abbruch(void);
int zeile;

int main(int argc, char *argv[])
{
char puffer[128];
FILE *textdatei;

if (argc < 2) {
printf("Kein Argument angegeben
");
getchar();
return 1;
} // if

if ((textdatei = fopen (argv<font size="1">, "r" )) == NULL) {
fprintf(stderr, "Sh*** ein Fehler beim oeffnen der datei %s ist aufgetreteten!",argv<font size="1">);
getchar();
return 1;
} // if

while (fgets(puffer,128,textdatei) != NULL) {
fprintf(stdout, "%4d:\t%s", zeile++,puffer);
} // while

fclose(textdatei);
getchar();
return 0;

} // main</font><hr></pre></blockquote>
Diese Prog liest den Inhalt einer Datei, Zeilenweise, und nummeriert diese auch.
wie kann ich das alles rückwärts ausgeben.???
Ich meine nur die Zeilen nicht alle Buchstaben.

bap

Re: File Zeilenweise ausgeben

#14 Post by bap »

Vielleicht sag ich mal wasfür ne Aufgabe ich bekommen habe:
Ich muss ein File öffnen und Zeilenweise ausgeben.
Dabei muss ich jede einzelne Zeile nummerieren.
Das Programm soll die Zeilen so ausgeben wie sie in der Datei stehen und nicht zb. nach x Zeichen trennen oder so.
das Programm soll Zeichenweise einlesen aund ausgeben denn ich muss jedes Zeichen mit
vergleichen.
Wenn
kommt soll es mir im Counter eins dazuzählen.
Also kurz gesagt muss ich in der Datei nach
suchen und bei jedem gefundenem
den Counter + 1 zählen.
Wenn das ganze klappt wird ich das Programm so umscheiben müssen das die Zeilen verkehrt herum ausgegeben werden, das sollt vielleicht beachtet werden.

THX

Post Reply