Hej, mam za zadanie napisać program, który wypisuje ilość znaków najdłuższej linii w tekście.
Napisałem coś takiego.. Ale kiedy kompiluje to, wywala mi błąd naruszenia ochrony pamięci i nie wiem dlaczego :P Mógłby ktoś zobaczyć ten kod i sprawdzić czy jest dobrze i wytknąć mi moje błędy? ;) Będę wdzięczny ;)
#include <stdlib.h>
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <errno.h>
int main(int argc, char* argv[]){
int fd= open(argv[1],O_RDWR);
char linia[256]; //przechowuje moja aktualna linie
char max_linia[256]; //przechowuje dlugosc najdluzszej linii
int linia_len=0; //liczy długość linii
int maxlinia_len=0; //liczy długość maxymalnej linii
char bufor;
int i;
while(read(fd,&bufor,1)>0){
if (bufor=='\n'){ //jezeli nowa linia
if(linia_len>maxlinia_len){
maxlinia_len=linia_len;
for(i=0; i<maxlinia_len;i++){
max_linia[i]=linia[i];
}
}
linia_len=0; //jezeli nowa linia nie jest najdluzsza to zaczynamy liczyc od nowa
}
else{
linia[i]=bufor;
i++;
}
}
printf("Dlugosc najdluzszej linii wynosi %d \n",maxlinia_len);
printf("OTO ONA: \n");
for(i=0; i<maxlinia_len; i++) {
printf("%c", max_linia[i]);
}
if(fd==-1){
perror("ERROR");
exit(1);
}
if(read(fd,&bufor,1)==-1){
perror("BLAD ODCZYTU PLIKU");
exit(1);
}
close(fd);
return 0;
}