Форум программистов, компьютерный форум CyberForum.ru

Чтение из файла и запись в файл - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Программа в С++ http://www.cyberforum.ru/cpp-beginners/thread68941.html
Решите пожалуйста задачу,вы професионалы!Заранее спасибо!Вот условие: В лабораторной работе №5 Номер 7!
C++ Использование библиотеки ввода/вывода Не могу сделать лабораторную на языке С++. Задание выглядит следующим образом: Реализуйте стандартные функции scanf (с помощью cin) и cout (с помощью printf) так, чтобы они могли использоваться одновременно. Заранее благодарю. http://www.cyberforum.ru/cpp-beginners/thread68935.html
Структуры. Функции ( С ) C++
помогите пожалуйста вот с такой мега задачкой на С: Описать тип struct Interval, задающий замкнутый интервал на действительной оси. Реализовать в виде отдельных функций следующие операции над интервалами: а) пересечение, б) интервальная оболочка (наименьший интервал, содержащий в себе два заданных), в) проверка включения одного интервала в другой, г) проверка ...
Битовый уровень C++
Сейчас в университете гоняют по задача для выполнения битовых операции и структурных операторов на битовом уровне, но я не сильно понимаю. Вот что я имею виду задача для примера: Показать на битовом уровне, определить является число число N кратное 16, в обычном случае понятно что такое кратное число Решение: iA тут какое нибудь число void main() { int iA,iB,i,x=0,F; for(i=0;i<4;i++) {...
C++ Массив http://www.cyberforum.ru/cpp-beginners/thread68886.html
Доброго времени суток прогеры. Вот задача. В одномерный массив водятся целые числа. Подсчитать количество положительных, отрицательных и нулевых элементов массива.Если отрицательных элементов окажется больше то поменять знаки всех элементов массива.Вывести первоначальные и измененные значения массива.Есть код #include "stdafx.h" #include "iostream" #include "iomanip" #include "cmath"...
C++ вопрос по скорости ком порта есть оригинальная программа для обмена данными с сотовым телефоном. но версия моего аппарата не поддерживается. на основе команд с нее сделал подобную прогу для своего аппарата. Но работает она раз в 10 медленнее. Хотя сделано все идентично. в обоих случаях стоит 115200ю Никто не в курсе - в чем может быть проблема при общении с портом? подробнее

Показать сообщение отдельно
easybudda
Эксперт С++
9456 / 5469 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
18.12.2009, 01:45     Чтение из файла и запись в файл
Цитата Сообщение от Ленка Посмотреть сообщение
окончательная версия. не работает.
Вот Вам работающая
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
#include <stdio.h>
#include <stdlib.h>
 
#define FIN_NAME "in.txt"
#define FOUT_NAME "out.txt"
#define WORD_BUF 255
#define SKIP_CHAR '*'
#define NODOUBLE_CHAR '+'
#define SEP_CHAR ' '
#define NEW_LINE '\n'
 
enum { INWORD = 1, SKIP = 2, NODOUBLE = 4 };
 
/*
*   читает слово из файла. если слово содержит "*", то его удалить, "+" - не менять, остальное продублировать. 
*   получившееся вывести в новый файл.
*/
 
int main(void){
    FILE *fin, *fout;
    char buf[WORD_BUF];
    int c, flags, pos;
    
    if ( ( fin = fopen(FIN_NAME, "r") ) == NULL ){
        perror("Can't open input file!\n");
        exit(1);
    }
    
    if ( ( fout = fopen(FOUT_NAME, "w") ) == NULL ){
        perror("Can't open output file!\n");
        exit(1);
    }
        
    pos = flags = 0;
    
    while ( ( c = fgetc(fin) ) != EOF ) {
        switch ( c ) {
            case SEP_CHAR :
            case NEW_LINE :
                if ( flags & INWORD ){
                    buf[pos] = '\0';
                    if ( ! ( flags & SKIP ) ){
                        pos = ( flags & NODOUBLE ) ? 1 : 2;
                        while ( pos-- )
                            fprintf(fout, "%s%c", buf, SEP_CHAR);
                    }
                    pos = flags = 0;
                }
                break;
            case SKIP_CHAR :
                flags |= SKIP;
            case NODOUBLE_CHAR :
                flags |= NODOUBLE;
            default :
                if ( pos < WORD_BUF - 1 )
                    buf[pos++] = c;
                flags |= INWORD;
                break;
        }
    }
    
    fclose(fin);
    fclose(fout);
    exit(0);
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru