Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- struct adat {
- short int azonosito; /*sorszam*/
- char szoveg[80]; /*egy sornyi szoveg*/
- int hossz; /*az aktualis sor hossza*/
- };
- int readline(FILE* fp, char* buff) {
- char c;
- int i = 0;
- // Olvasas a fajlbol EOF (fajl vege) vagy \n (sor vege) karakterig
- while ((c = fgetc(fp)) != EOF && c != '\n') {
- if (i >= 79) continue; // Hogy ne probaljon meg bele tobbet irni mint 79 karaktert (kell egy hely a vegere a null karakternek), de megis vegig olvassa a sort, mert kulonben szar lesz.
- buff[i++] = c;
- }
- buff[i] = '\0';
- return i;
- }
- int writeline(FILE* fp, struct adat *a) {
- fwrite(a, sizeof(*a), 1, fp);
- }
- int main() {
- struct adat a;
- FILE *fp1, *fp2;
- // forrasfajl megnyitasra olvasasra
- if (!(fp1 = fopen(__FILE__, "r"))) {
- printf("Nem sikerult megnyitni a forras fajlt olvasasra.\n");
- return 0;
- }
- // Celfajl megnyitasa binary-safe irasra/olvasasra
- else if (!(fp2 = fopen("teszt.bin", "w+b"))) {
- printf("Nem sikerult megnyitni a cel fajlt binary-safe irasra/olvasasra.\n");
- return 0;
- }
- // Forrasfajl sorainak beolvasasa a strukturaba es kiiratasa a celfajlba
- int i = 0;
- do {
- a.azonosito = ++i;
- a.hossz = readline(fp1, a.szoveg); // beolvasas fuggvennyel
- //printf("%02d|%2d|%s\n", a.azonosito, a.hossz, a.szoveg);
- writeline(fp2, &a); // kiiratas a celfajlba
- }
- while (!feof(fp1));
- /* EZ CSAK TESZT MIATT KELL */
- rewind(fp2);
- while (fread(&a, sizeof(a), 1, fp2) == 1)
- printf("%02d|%2d|%s\n", a.azonosito, a.hossz, a.szoveg);
- /* ------------------------ */
- fclose(fp1);
- fclose(fp2);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement