Witam, mam następujące zadanko:
Napisz program, który będzie pobierał od użytkownika liczby całkowite, aż do wprowadzenia liczby 0 i zapisywał je do plików tekstowych, w następujący sposób:
do pliku 2.txt wszystkie liczby podzielne przez 2,
do pliku 3.txt podzielne przez 3,
do pliku 5.txt podzielne przez 5,
a do pliku 0.txt pozostałe.
Każda liczba ma znajdować się w nowym wierszu.Jeżeli operacje tworzenia któregoś z plików nie powiedzie się, program powinien wyświetlić komunikat Couldn't create file i zakończyć działanie z kodem błędu 5.
W przypadku sukcesu program powinien wyświetlić komunikat Files saved i zwrócić wartość 0.
Wszystko chyba działa, tylko problem jest w momencie gdy test automatyczny próbuje podać zbyt dużo danych na raz(ok 6500 znaków), jak policzyłem do konsoli mogę maksymalnie wkleić około 4094 znaków na raz, jak to naprawić żeby dało się wpisać większą ilość danych na raz?
Mój kod:
#include <stdio.h>
#include <stdlib.h>
int main() {
int liczba = 1;
FILE *fp, *fp2, *fp3, *fp5;
if ((fp2 = fopen("2.txt", "a")) == NULL) {
printf("couldn't create file");
exit(5);
}
if ((fp3 = fopen("3.txt", "a")) == NULL) {
printf("couldn't create file");
fclose(fp2);
exit(5);
}
if ((fp5 = fopen("5.txt", "a")) == NULL) {
printf("couldn't create file");
fclose(fp2);
fclose(fp3);
exit(5);
}
if ((fp = fopen("0.txt", "a")) == NULL) {
printf("couldn't create file");
fclose(fp2);
fclose(fp3);
fclose(fp5);
exit(5);
}
printf("Podaj liczby:\n");
while (liczba != 0) {
scanf("%d", &liczba);
if (liczba == 0) {
printf("Files saved");
break;
}
if (liczba % 2 == 0 && liczba % 3 == 0 && liczba % 5 == 0) {
fprintf(fp2, "%d\n", liczba);
fprintf(fp3, "%d\n", liczba);
fprintf(fp5, "%d\n", liczba);
}
else if (liczba % 2 == 0 && liczba % 3 == 0) {
fprintf(fp2, "%d\n", liczba);
fprintf(fp3, "%d\n", liczba);
}
else if (liczba % 3 == 0 && liczba % 5 == 0) {
fprintf(fp3, "%d\n", liczba);
fprintf(fp5, "%d\n", liczba);
}
else if (liczba % 2 == 0 && liczba % 5 == 0) {
fprintf(fp2, "%d\n", liczba);
fprintf(fp5, "%d\n", liczba);
}
else if (liczba % 2 == 0) {
fprintf(fp2, "%d\n", liczba);
}
else if (liczba % 3 == 0) {
fprintf(fp3, "%d\n", liczba);
}
else if (liczba % 5 == 0) {
fprintf(fp5, "%d\n", liczba);
}
else {
fprintf(fp, "%d\n", liczba);
}
}
fclose(fp);
fclose(fp2);
fclose(fp3);
fclose(fp5);
return 0;
}