28
Июн
2022

Доброго дня! Как добавить всю строку в конец файла? На данный момент программа считает до первого пробела в передаваемой строке

Проблема во второй части программы, а именно в строке fprinf(); Почему-то она не записывает в файл полностью строку со всеми пробелами. Она записывает первое слово до пробела, а потом исполняется заново, с новой строки записывает второе слово и так обрабатывает каждый пробел? а нужно просто добавить строку в конец файла с новой строки.

    #include <stdio.h>
//  void read_file();

int main() {
    int a;
    char file_name[300];
    char ch;
    FILE *file;
    char text[300];
    while (a != -1) {
        scanf("%d", &a);
        if (a == 1) {
            
            scanf("%s", file_name);
            file = fopen(file_name, "r");
            if (file == NULL) {
                printf("n/a\n");
            } else {
                ch = fgetc(file);
                    if (ch != EOF) {
                        while (ch != EOF) {
                            putchar(ch);
                            ch = fgetc(file);
                            }
                        printf("\n");
                 } else {
                    printf("n/a\n");
                    }
                }
                fclose(file);
            }
        if (a == 2) {
            file = fopen(file_name, "r");
            if (file == NULL) {
                printf("n/a\n");
                fclose(file);
                continue;
            }
            file = fopen(file_name, "a+");
                scanf("%s", text);
                fprintf(file, "\n%s", text);
                fclose(file);
                file = fopen(file_name, "r");
                ch = fgetc(file);
                    if (ch != EOF) {
                        while (ch != EOF) {
                            putchar(ch);
                            ch = fgetc(file);
                            }
                        fclose(file);
                        printf("\n");
                 }
        }
    }
}

Источник: https://ru.stackoverflow.com/questions/1424662/%D0%94%D0%BE%D0%B1%D1%80%D0%BE%D0%B3%D0%BE-%D0%B4%D0%BD%D1%8F-%D0%9A%D0%B0%D0%BA-%D0%B4%D0%BE%D0%B1%D0%B0%D0%B2%D0%B8%D1%82%D1%8C-%D0%B2%D1%81%D1%8E-%D1%81%D1%82%D1%80%D0%BE%D0%BA%D1%83-%D0%B2-%D0%BA%D0%BE%D0%BD%D0%B5%D1%86-%D1%84%D0%B0%D0%B9%D0%BB%D0%B0-%D0%9D%D0%B0-%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D0%B9-%D0%BC%D0%BE%D0%BC%D0%B5%D0%BD%D1%82-%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B0-%D1%81

28
Июн
2022

Доброго дня! Как добавить всю строку в конец файла? На данный момент программа считает до первого пробела в передаваемой строке

Проблема во второй части программы, а именно в строке fprinf(); Почему-то она не записывает в файл полностью строку со всеми пробелами. Она записывает первое слово до пробела, а потом исполняется заново, с новой строки записывает второе слово и так обрабатывает каждый пробел? а нужно просто добавить строку в конец файла с новой строки.

    #include <stdio.h>
//  void read_file();

int main() {
    int a;
    char file_name[300];
    char ch;
    FILE *file;
    char text[300];
    while (a != -1) {
        scanf("%d", &a);
        if (a == 1) {
            
            scanf("%s", file_name);
            file = fopen(file_name, "r");
            if (file == NULL) {
                printf("n/a\n");
            } else {
                ch = fgetc(file);
                    if (ch != EOF) {
                        while (ch != EOF) {
                            putchar(ch);
                            ch = fgetc(file);
                            }
                        printf("\n");
                 } else {
                    printf("n/a\n");
                    }
                }
                fclose(file);
            }
        if (a == 2) {
            file = fopen(file_name, "r");
            if (file == NULL) {
                printf("n/a\n");
                fclose(file);
                continue;
            }
            file = fopen(file_name, "a+");
                scanf("%s", text);
                fprintf(file, "\n%s", text);
                fclose(file);
                file = fopen(file_name, "r");
                ch = fgetc(file);
                    if (ch != EOF) {
                        while (ch != EOF) {
                            putchar(ch);
                            ch = fgetc(file);
                            }
                        fclose(file);
                        printf("\n");
                 }
        }
    }
}

Источник: https://ru.stackoverflow.com/questions/1424662/%D0%94%D0%BE%D0%B1%D1%80%D0%BE%D0%B3%D0%BE-%D0%B4%D0%BD%D1%8F-%D0%9A%D0%B0%D0%BA-%D0%B4%D0%BE%D0%B1%D0%B0%D0%B2%D0%B8%D1%82%D1%8C-%D0%B2%D1%81%D1%8E-%D1%81%D1%82%D1%80%D0%BE%D0%BA%D1%83-%D0%B2-%D0%BA%D0%BE%D0%BD%D0%B5%D1%86-%D1%84%D0%B0%D0%B9%D0%BB%D0%B0-%D0%9D%D0%B0-%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D0%B9-%D0%BC%D0%BE%D0%BC%D0%B5%D0%BD%D1%82-%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B0-%D1%81

Тебе может это понравится...

Добавить комментарий