Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 12.10.2018
Сообщений: 24

Проблема с потоками ввода и вывода + remove + rename

01.03.2019, 18:03. Показов 1482. Ответов 4

Студворк — интернет-сервис помощи студентам
Здравствуйте, вот такая проблема. Потоки ввода и вывода вообще не открываются; в инете смотрел, вроде все должно быть правильно,но не работает.
Моя программа удаляет, записывает, изменяет строки в определенном файле(что-то вроде каталога)
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <io.h>
//#include <sys\stat.h>
#define S_IREAD  0000400
#define S_IWRITE 0000200
 
/*
Эта функция нужна для проверки, есть ли значение в файле. Так как она не работает(возможно по той же причине), я ее на время откомментировал. 
 
int find(char change_word[])
{
    int i = 0;
    FILE *in = fopen("source.txt","r");   
    while(feof (in) != 0){
        char example[80];
        fscanf(in,"%s\n",&example);
        if(strcmp(change_word,example))
            break;
        i++;
    }
    return i;
}
*/
 
void add(char* string){
     FILE *in = fopen("source.txt","w");
     if(!feof(in))
         printf("WOW");
     else
        fprintf(in, "%s\n ", &string);
     fclose(in);
}
 
void delete (char* string) 
{
    FILE *in = fopen("source.txt","r");
    creat("file.txt",S_IREAD|S_IWRITE);
    FILE *out = fopen("file.txt","w");
 
    if(!feof(out))
        printf(" OMGGGGGG ");
    if(!feof(in))
        printf(" bums ");
 
    while(feof(in)){
        char val[80];
        fscanf(in, "%s\n", &val);
        if(strcmp(string, val))
            continue;
        if(val=="\n")
            break;
        fprintf(out, "%s\n", &val);
    }
    if( remove( "file.txt" ) != 0 ) 
        printf("F*CK ");
    else
        printf("All is ok ");
    if (-1 == rename ("file.txt","source.txt"))
      printf ("f*ck\n");
    else 
      printf ("OK");
    fclose(in);
    fclose(out);
}
 
void change(char string[], char change_word[]){
    delete(change_word);
    add(string);
}
 
int main(){
    char parametr[7];
    char string[80];
    char change_word[80];
    
    printf("Vvedite stroku na 79 simvolov i menshe ");
    fgets(string, 80 ,stdin);
    printf("Chto mne s nei delat? (add or change or delete) ");
    fgets(parametr, 7, stdin);
 
    int a = 0;
    int b = 0;
    int c = 0;
 
 
 
    if(strstr(parametr ,"delete")) a = 1;
    else a = 0;
    if(strstr(parametr ,"add")) b = 1;
    else b = 0;
    if(strstr(parametr ,"change")) c=1;
    else c = 0;
//Тут хотел сделать покомпактней, но не вышло
    //strstr(parametr ,"add")!=0 ? b = 1 : b = 0;
    //strstr(parametr ,"change")!=0 ? c = 1 : c = 0;
 
    if(a==1){
        //if(find(string)!=0)
                delete(string);
        //else 
        //  printf("Netu");
    }
    else{
        if(b==1)
            add(string);
        else{
            if(c==1){
                printf("Vvedite stroku kotoruy hotite zamenit ");
                fgets(change_word, 80, stdin);
                //if(find(change_word)!=0)
                    change(string, change_word);
                //else
                //  printf("Netu");
            }
            else{
                printf("Error: Ne pravelnii parametr ");
                fgets(parametr, 80, stdin);
            }
        }
    }
    system("pause");
}
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.03.2019, 18:03
Ответы с готовыми решениями:

Работа с потоками ввода и вывода
Добрый день, всем! Пишу программу, которая бы хранила определенные данные(в моем случае строка и число) в файле на компьютере. При этом...

Приведите пример перегруженного ввода / вывода с консольными потоками
наведите пожалуйста пример перегруженного ввода / вывода с консольными потоками? и описание перегруженных операций сравнения?

Ошибка при работе с потоками ввода (вывода) в файл (из файла)
Изучаю перегрузку операторов ввода/вывода с файлом и без. Вылетает такая ошибка при отработанном коде: Необработанное исключение по...

4
Мозгоправ
 Аватар для L0M
1745 / 1039 / 468
Регистрация: 01.10.2018
Сообщений: 2,138
Записей в блоге: 2
01.03.2019, 22:27
Лучший ответ Сообщение было отмечено ЯрославМуравьев как решение

Решение

Цитата Сообщение от ЯрославМуравьев Посмотреть сообщение
Потоки ввода и вывода вообще не открываются; в инете смотрел
Документацию читать надо

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
#include <string.h>
#include <stdio.h>
 
/*
Эта функция нужна для проверки, есть ли значение в файле. Так как она не работает(возможно по той же причине), я ее на время откомментировал.
 
int find(char change_word[])
{
    int i = 0;
    FILE *in = fopen("source.txt","r");
    while(feof (in) != 0){
        char example[80];
        fscanf(in,"%s\n",&example);
        if(strcmp(change_word,example))
            break;
        i++;
    }
    return i;
}
*/
 
void add(char* string) {
    FILE *in = fopen("source.txt", "a");
    if (in) {
        fprintf(in, "%s\n", string);
        printf("string [%s] added to file\n", string);
        fclose(in);
    }
    else
        printf("add: open file error ((\n");
}
 
void del(char* string) {
    FILE *in = fopen("source.txt", "r");
    if (in == NULL) {
        printf("del: source.txt open error ((\n");
        return;
    }
 
    FILE *out = fopen("file.txt", "w");
    if (out == NULL) {
        printf("del: file.txt open error ((\n");
        fclose(in);
        return;
    }
 
    char val[80];
    while (fscanf(in, "%s", &val) != EOF) {
        if (strcmp(string, val) == 0)
            continue;
        if (val == "\n")
            break;
        fprintf(out, "%s\n", val);
    }
    fclose(in);
    fclose(out);
 
    if (remove("source.txt") == 0) {
 
        if (rename("file.txt", "source.txt") == 0)
            printf("string [%s] deleted from file\n", string);
        else
            printf("del: rename file.txt to source.txt failed\n");
    }
    else
        printf("del: remove source.txt failed\n");
}
 
void change(char string[], char change_word[]) {
    del(change_word);
    add(string);
}
 
int main() {
    char parametr[10];
    char string[80];
    char change_word[80];
 
    do {
        printf("\nVvedite stroku na 79 simvolov i menshe ");
        fgets(string, 80, stdin);
        string[strlen(string) - 1] = 0;
        printf("Chto mne s nei delat? (add or change or delete or nah) ");
        fgets(parametr, 10, stdin);
        parametr[strlen(parametr) - 1] = 0;
 
        if (strcmp(parametr, "add") == 0) {
            add(string);
            continue;
        }
 
        if (strcmp(parametr, "delete") == 0) {
            del(string);
            continue;
        }
 
        if (strcmp(parametr, "change") == 0) {
            printf("Vvedite stroku kotoruy hotite zamenit ");
            fgets(change_word, 80, stdin);
            change_word[strlen(change_word) - 1] = 0;
            change(string, change_word);
            continue;
        }
 
        if (strcmp(parametr, "nah") == 0)
            break;
 
        printf("Error: Ne pravelnii parametr\n");
 
    } while (1);
 
    //system("pause");
}
1
0 / 0 / 0
Регистрация: 12.10.2018
Сообщений: 24
01.03.2019, 22:31  [ТС]
Спасибо и извините, что так грязно... Я обязательно исправлюсь
0
Мозгоправ
 Аватар для L0M
1745 / 1039 / 468
Регистрация: 01.10.2018
Сообщений: 2,138
Записей в блоге: 2
02.03.2019, 00:55
В вашем коде есть принципиально спорные моменты:

Ни что не мешает ввести две одинаковые строки.
Даём команду заменить строку, которая повторяется, допустим, дважды. Удалится 2 строки, вставится одна.
Команда замены не сохраняет порядок строк. Т.е. происходит не замена, когда на месте прежней строки появляется новая строка.

А для спасибы специальная кнопочка есть
1
0 / 0 / 0
Регистрация: 12.10.2018
Сообщений: 24
02.03.2019, 01:00  [ТС]
На счёт change я думал, но решил не парится, т.к. К файлу доступ только у меня. Пользователю нельзя будет(над этим поработаю).

Если даже 2 одинаковые, доступ к ним не по индексу. А через strcmp
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.03.2019, 01:00
Помогаю со студенческими работами здесь

Функция remove() удаляет только заранее запланированые файлы, выдавая ошибку на remove (STRING)
Салем, начал изучать файловую работу в С++, и столкнулся с такой проблемой, что функция remove() соглашается удалять только заранее...

проблема с потоками
Ребят при написании программы появилась проблема, опишу вкратце. пишу интерфейс WTL шаблонами. В MainWindow класса есть метод обработки...

Функции rename() и remove()
Есть код под FreeBSD компилиться и выполняется на ура. Хочу его портировать под винду. Прога полностью на ANSI C с использованием...

Реализовать функции: mktemp, remove, rename, setmode, fileleght
Здравствуйте нужна помощь с заданием по курсовой, Тема: Реализация функций стандартной библиотеки языка Си с использованием сервиса...

модуль STM32, проблема с портами ввода-вывода ?
Всем привет, не давно купил Pinboard 2, с модулем STM32. Установил CoIDE, с помощью программы CoFtosh прошил пример (gpio_rtos_cmsis.bin)...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru