Program, który odczytuje zawartość pliku txt i zapisuje ją do zmiennej char*.
#include <stdio.h>
#include <stdlib.h>
long getFileSize(char *filename)
{
FILE *file = fopen(filename,"r");
long tmp;
fseek(file,0,SEEK_END);
tmp = ftell(file);
fclose(file);
return tmp;
}
char *getFileContent(char *filename)
{
FILE *file;
long filesize = getFileSize(filename);
char *buffer = malloc(filesize+1);
if (file = fopen(filename, "rt"))
{
fread(buffer, 1, filesize, file);
buffer[filesize] = 0;
fclose(file);
}
return buffer;
}
int main()
{
char *content = getFileContent("shows.txt");
printf("%Rozmiar pliku: %d\nDlugosc content: %d\n",getFileSize("shows.txt"),strlen(content));
int index;
int buff=0;
for(index=0; index<strlen(content); index++)
if(content[index]=='\n')
buff++;
printf("Liczba znakow \\n: %d\n",buff);
return 0;
}
Odczytywany plik w załączniku.
No i problem. Program wypisuje:
Rozmiar pliku: 74205
Dlugosc content: 73728
Liczba znakow \n: 1216
-
Dlaczego rozmiar pliku i długość zmiennej jest różna?
-
Dlaczego nie zgadza się liczba znaków nowej linii? shows.txt otwarty w Notepad++ pokazuje, że ma 1204 linie (licząc od 1), a z powyższego wynika, że ma 1216 linii.
-
Gdy próbowałem wyświetlić zawartość zmiennej content program wyświetlił całą zawartość pliku plus śmieci będące wyciętym mniej więcej środkiem tego pliku.
Zakładam temat, bo trochę nad tym siedziałem. I poległem.
Ps. Plik shows.txt jest wynikiem obróbki stron HTML pobranych przez cURL-a z filmwebu. Nie wiem czy ma to jakieś znaczenie, ale piszę...