Files
kolibrios/programs/develop/ktcc/trunk/libc.obj/samples/file_io.c
Egor00f 15f27eb1c3
Some checks failed
Build system / Build (pull_request) Failing after 1s
Build system / Check kernel codestyle (pull_request) Successful in 1m18s
libc.obj: add call exit after main && add build for ctr0.o && use return instead exit in samples
нен работает
по стандартам после `main` должно быть закрыте всего, что закрывается в `exit`
ну терпите, crt увеличиласть на несколько байт
обертка для `exit` в crt нужна т.к. `exit` импортируется.

зачем вообще было держать бинарь `libc.obj/lib/crt0.o`, если абсолютно такой же лежит в `bin/lib/` всемсте `tcc`? Нет, зачем вообще тащить бинари в репку?
2026-01-15 21:19:10 +05:00

52 lines
1.2 KiB
C

#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define READ_MAX 255
static char test_str1[] = "123454567890abcdefghijklmnopqrstufvwxyz";
static char test_str2[READ_MAX];
int main(int argc, char** argv)
{
int i = 0;
FILE* f;
// write to file
debug_printf("Write file...\n");
f = fopen("testfile.txt", "w");
while (test_str1[i] != 'a') {
fputc(test_str1[i], f);
i++;
}
fclose(f);
// append to file
debug_printf("Apend file...\n");
f = fopen("testfile.txt", "a");
fputs(test_str1 + i, f);
char null_term = '\0';
fwrite(&null_term, sizeof(char), 1, f);
printf("Error: %s\n", strerror(errno));
fclose(f);
// copy from testfile.txt to copyfile.txt
debug_printf("Read file...\n");
f = fopen("testfile.txt", "r");
i = 0;
while ((test_str2[i] = fgetc(f)) != EOF && i < READ_MAX) {
fputc(test_str2[i], stdout);
i++;
}
printf("\n%s\n", test_str1);
if (!strcmp(test_str2, test_str1)) {
puts("TEST: OK!");
} else {
puts("TEST: FAIL!");
}
fclose(f);
return 0;
}