Проблема в основном заключается в использовании get.
Попробуйте выполнить следующие изменения, где я использовал scanf и fgets:
#include <stdio.h>
// #include <unistd.h>
int main() {
char fileSelectionInput[20];
printf("Select a file to print to: ");
scanf("%19s", fileSelectionInput); // %19s checks the size of input
// if (access(fileSelectionInput, F_OK ) == -1) {
// puts("It seems that this file does not exist, sorry.");
// return 0;
// }
printf("Okay now you can type text to append\n\n");
FILE* testFile = fopen(fileSelectionInput, "a+");
if (testFile == NULL) {
perror("fopen()");
return 1;
}
int writesLeft = 10;
while (writesLeft > 1) {
char textInput[50];
fgets(textInput, sizeof(textInput), stdin);
fputs(textInput, testFile);
--writesLeft;
}
fclose(testFile);
return 0;
}
Когда вы проверяете результат fopen
, вы не можете не нужно проверять, существует ли файл с access
. Это делает ваш код более переносимым.
Я использовал %19s
в scanf
, поэтому он не будет писать за пределами массива; В него помещается 19 символов и 1 нулевой байт.