Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
File Zeilenweise ausgeben

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Programmieren - C
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
bap
Gast





BeitragVerfasst am: 21. Jan 2002 10:16   Titel: File Zeilenweise ausgeben

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
Gast





BeitragVerfasst am: 21. Jan 2002 12:38   Titel: Re: File Zeilenweise ausgeben

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
Gast





BeitragVerfasst am: 21. Jan 2002 12:44   Titel: Re: File Zeilenweise ausgeben

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
Gast





BeitragVerfasst am: 21. Jan 2002 13:05   Titel: Re: File Zeilenweise ausgeben

danke.

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

Sulu
Gast





BeitragVerfasst am: 21. Jan 2002 13:07   Titel: Re: File Zeilenweise ausgeben

Gern geschehen.

Mit dem Bug werde ich leben können


Gruss
Sulu
 

bap
Gast





BeitragVerfasst am: 21. Jan 2002 13:30   Titel: Re: File Zeilenweise ausgeben

ich nicht
 

bap
Gast





BeitragVerfasst am: 21. Jan 2002 14:51   Titel: Re: File Zeilenweise ausgeben

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

Jochen
Gast





BeitragVerfasst am: 21. Jan 2002 14:57   Titel: Re: File Zeilenweise ausgeben

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
Gast





BeitragVerfasst am: 21. Jan 2002 14:58   Titel: Re: File Zeilenweise ausgeben

Achje, die Backslashes im Board...

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


Jochen
 

bap
Gast





BeitragVerfasst am: 21. Jan 2002 15:46   Titel: Re: File Zeilenweise ausgeben

#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, "r" )) == NULL) {
fprintf(stderr, "Sh*** ein Fehler beim oeffnen der datei %s ist aufgetreteten!",argv);
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
Gast





BeitragVerfasst am: 21. Jan 2002 16:42   Titel: Re: File Zeilenweise ausgeben

"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
Gast





BeitragVerfasst am: 21. Jan 2002 17:06   Titel: Re: File Zeilenweise ausgeben

@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
Gast





BeitragVerfasst am: 22. Jan 2002 15:16   Titel: Re: File Zeilenweise ausgeben

code:
#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, "r" )) == NULL) {
fprintf(stderr, "Sh*** ein Fehler beim oeffnen der datei %s ist aufgetreteten!",argv);
getchar();
return 1;
} // if

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

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

} // main


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
Gast





BeitragVerfasst am: 24. Jan 2002 11:38   Titel: Re: File Zeilenweise ausgeben

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
 

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Programmieren - C Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy