-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy patheditor.c
More file actions
90 lines (70 loc) · 2.1 KB
/
Copy patheditor.c
File metadata and controls
90 lines (70 loc) · 2.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#pragma warning (disable : 4996)
char* wczytaj_plik(char* nazwa_pliku)
{
FILE* wczytany_plik = fopen(nazwa_pliku, "r");
if (!wczytany_plik)
{
printf("Blad otwarcia pliku");
exit(EXIT_FAILURE);
}
fseek(wczytany_plik, 0, SEEK_END);
long rozmiar_pliku = ftell(wczytany_plik);
rewind(wczytany_plik);
char* zawartosc = (char*)malloc(rozmiar_pliku + 1);
if (!zawartosc)
{
printf("Blad alokacji pamieci");
exit(EXIT_FAILURE);
}
fread(zawartosc, 1, rozmiar_pliku, wczytany_plik);
zawartosc[rozmiar_pliku] = '\0';
fclose(wczytany_plik);
return zawartosc;
}
char* zlacz_teksty(char* tekst_1, char* tekst_2, char znak_laczenia)
{
char* indeks_laczenia = strchr(tekst_1, znak_laczenia);
if (indeks_laczenia == NULL)
{
printf("Nie znaleziono znaku po ktorym mozna polaczyc teksty\n");
exit(EXIT_FAILURE);
}
size_t docelowy_rozmiar = (indeks_laczenia - tekst_1) + strlen(tekst_2) + 2;
char* zlaczone_teksty = (char*)malloc(docelowy_rozmiar);
if (!zlaczone_teksty)
{
printf("Blad alokacji tablicy\n");
exit(EXIT_FAILURE);
}
strncpy(zlaczone_teksty, tekst_1, indeks_laczenia - tekst_1 + 1);
zlaczone_teksty[indeks_laczenia - tekst_1 + 1] = '\0';
strcat(zlaczone_teksty, tekst_2);
return zlaczone_teksty;
}
int main()
{
char* zawartosc_tekst_1 = wczytaj_plik("tekst1.txt");
printf("Tresc pliku tekst1.txt:\n%s\n\n", zawartosc_tekst_1);
char* zawartosc_tekst_2 = wczytaj_plik("tekst2.txt");
printf("Tresc pliku tekst2.txt:\n%s\n\n", zawartosc_tekst_2);
printf("Podaj znak z pierwszego tekstu po ktorym ma nastapic polaczenie tekstow: ");
char znak_laczenia;
scanf(" %c", &znak_laczenia);
char* zlaczony_tekst = zlacz_teksty(zawartosc_tekst_1, zawartosc_tekst_2, znak_laczenia);
printf("\nTekst po dolaczeniu:\n%s\n", zlaczony_tekst);
FILE* plik_wynikowy = fopen("wynik.txt", "w");
if (!plik_wynikowy)
{
printf("Blad otwarcia pliku wynik.txt");
exit(EXIT_FAILURE);
}
fprintf(plik_wynikowy, "%s", zlaczony_tekst);
fclose(plik_wynikowy);
free(zawartosc_tekst_1);
free(zawartosc_tekst_2);
free(zlaczony_tekst);
return 0;
}