{ char s[100];
FILE* f = fopen("ex_01.txt","r");
for (;;) { if (fscanf(f,"%s",s)==EOF) break;
puts(s);
}
}
У наведеному нижче прикладі функція filelen повертає розмір файлу в байтах, причому файл може бути як текстовим, так і бінарним.
// Приклад 2
ulong filelen(char* nf)
{ ulong L=0;
FILE* f= fopen(nf,"rb");
errhalt(f==0,"filelen: Файл не відкритий!");
for (;;) { if (fgetc(f)==EOF) break; L++; }
fclose(f);
return L;
}
Нижче наведено приклад програми, яка виконує сортування списку виборців. Імена вхідного й вихідного файлів вказуються в командному рядку. Кожний рядок вхідного файлу містить відомості про одного виборця: прізвище, ініціали й, можливо, іншу інформацію (рік народження, адреса й т.п.). Програма зчитує інформацію із вхідного файлу, впорядковує список так, щоб прізвища виборців були розташовані за абеткою, і записує впорядкований список у відповідний файл. Для збереження списку виборців використовується динамічний масив рядків. Зверніть увагу на те, що одиницею інформації, що оброблюється у цій програмі, є рядок тексту, який може вміщувати пробіли.
// Приклад 3
#include <syst.h>
const L=200;
void main(int N, char** f)
{ FILE* in = fopen(f[1],"r");
FILE* out= fopen(f[2],"w");
char** S; char buf[L];
int i,j,n;
for (n=0;;n++) { fgets(buf,L,in); if (feof(in)) break; }
S= new char*[n]; for (i=0;i<n;i++) S[i]= new char[L];
rewind(in);
for (i=0;i<n;i++) fgets(S[i],L,in);
for (i=0;i<n-1;i++)
for (j=0;j<n-1;j++)
if (strcmp(S[j],S[j+1])==1) swp(S[j],S[j+1]);
for (i=0;i<n;i++) fputs(S[i],out);
for (i=0;i<n;i++) delete[] S[i]; delete[] S;
fclose(out); fclose(in);
puts("List was ordered successfully!");
}
Функція fgets, що застосована у цьому прикладі, на відміну від інших функцій зчитування з файлу, зчитує рядок не до першого пробілу, а до символу EOL (кынець рядка). Функція fputs дозволяє записувати рядок таким же чином у файл.
Нижче наведено програму, яка виконує копіювання інформації з одного файлу в іншій. Імена файлів вказуються у командному рядку.
// Приклад 4
#include <stdio.h>
void main(int N, char** fnam)
{ FILE* fa= fopen(fnam[1],"r");
FILE* fb= fopen(fnam[2],"w");
while (!feof(fa)) putc(fgetc(fa),fb);
}