Archiv verlassen und diese Seite im Standarddesign anzeigen : kleiner bug
kann ich folgendes Prog auch ohne Zieilenbegrenzung machen??
#include <stdio.h>
#define BUF 255
char temp[BUF];
char puffer[BUF];
int i;
char *getsline_number(int n1,int n2, FILE *file)
{
for(i=0; i<n1-1; i++)
if(fgets(temp, BUF, file) == NULL)
return NULL;
printf("\n\n");
for(i=n1; i<=n2; i++){
if(fgets(puffer,BUF,file)==NULL)
return NULL;
printf("Zeile %d : %s",i,puffer);
}
}
int main(int argc, char **argv)
{
FILE *quelldatei;
int line1,line2;
char *linenr;
quelldatei=fopen(argv[1],"r");
if(quelldatei == NULL)
{
printf("Fehler beim öffnen");
exit(0);
}
line1=1;
line2=100;
linenr=getsline_number(line1,line2, quelldatei);
}
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 \n vergleichen.
Wenn \n kommt soll es mir im Counter eins dazuzählen.
Also kurz gesagt muss ich in der Datei nach \n suchen und bei jedem gefundenem \n 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
anda_skoa
24-01-2002, 11:27
Und du darfst kein C++ benutzen, sondern nur C?
Weil rup hat dir ja schon eine feine C++ Lösung geschrieben, oder?
Ciao,
_
anda_skoa
24-01-2002, 11:50
Nur mal eine Frage:
Nachdem das ja offensichtlich eine Aufgabe ist, bringt es dir nicht mehr, wenn du dir nicht von uns das Programm schreiben läßt?
Hast du zumindest die Augabenstellun schon mit zeichenweisem auslesen alleine geschrieben?
Ciao,
_
Hi,
#include <stdio.h>
#define BUF 1024
int main(int argc, char **argv)
{
FILE *quelldatei;
char temp[BUF];
char *ptr;
int num = 0;
quelldatei=fopen(argv[1],"r");
if(quelldatei == NULL)
{
printf("Fehler beim öffnen");
exit(0);
}
while(fgets(temp, BUF, file) != NULL)
{
ptr = temp;
while( *ptr && *ptr != '\n')
*ptr++;
num++;
}
fprintf(stdout, "Die Datei hat %i Zeilen\n", num );
return(0);
}
Konnte es nicht testen, da ich im Moment nicht vor einem Linuxrechner sitze, sollte aber funktionieren ( was das Nummerieren der Zeilen angeht ).
Den Rest solltest Du mal selber versuchen zu lösen ;)
Gruß micha
zeichen weise geht so:
int main(int argc, char *argv[])
{
int c;
FILE *datei;
datei=fopen(argv[1],"r");
if(datei!=NULL)
{
while((c=getc(datei))!= EOF)
putchar(c);
}
else
printf("Konnte Datei nicht finden bzw. öffnen!\n");
return 0;
}
Ich hab einfach so einen tollen Lehrmeister der mir nicht hilft sondern mir Aufgaben gibt die ich nicht kann.
ZB. die C Grundlagen hab ich nie gelernt weil ich gleich ne AUfgabe bekommen hab.
Powered by vBulletin® Version 4.2.5 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.