Untitled

mail@pastecode.io avatar
unknown
plain_text
8 months ago
2.4 kB
2
Indexable
Never
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char filePathGlobal[256] = ""; // Глобальная переменная для хранения пути к файлу
int readCount = 0; // Счетчик количества выполненных операций чтения

void readFile(const char *filePath) {
    FILE *file = fopen(filePath, "r");
    if (file == NULL) {
        printf("n/a\n");
        return;
    }

    char ch;
    int isEmpty = 1;
    while ((ch = fgetc(file)) != EOF) {
        isEmpty = 0;
        putchar(ch);
    }
    fclose(file);

    if (isEmpty) {
        printf("n/a\n");
    }
    printf("\n"); // Перенос строки после вывода содержимого файла
}

void appendToFile(const char *filePath) {
    printf("Enter text to append (text will be saved): ");
    scanf("%s", filePathGlobal); // Для чтения строки с пробелами используйте fgets и очистите буфер ввода

    FILE *file = fopen(filePath, "a");
    if (file == NULL) {
        printf("n/a\n");
        return;
    }

    fprintf(file, "%s\n", filePathGlobal);
    fclose(file);
}

int main() {
    while (1) {
        printf("1. Enter file path\n");
        printf("2. Append text to file\n");
        printf("-1. Exit and display file content\n");
        printf("Choose an option: ");

        int choice;
        scanf("%d", &choice);

        if (choice == -1) {
            for (int i = 0; i < readCount; i++) {
                if (strlen(filePathGlobal) != 0) {
                    readFile(filePathGlobal);
                } else {
                    printf("n/a\n");
                    break;
                }
            }
            break;
        }

        switch (choice) {
            case 1:
            case 2: // Увеличиваем счетчик для обеих операций, кроме выхода
                readCount++;
                if (choice == 1) {
                    printf("Enter file path: ");
                    scanf("%s", filePathGlobal);
                } else if (choice == 2 && strlen(filePathGlobal) != 0) {
                    appendToFile(filePathGlobal);
                } else {
                    printf("n/a\n");
                }
                break;
            default:
                printf("n/a\n");
                break;
        }
    }
    return 0;
}
Leave a Comment