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

Работа со строками - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Функция strcat http://www.cyberforum.ru/cpp-beginners/thread17916.html
Нужно написать прогу на C++ и Ассемблере...функцмя strcat(на ассемблере сделал а вот на C++ не могу).Если кто поможет буду очень признателен....а если ещё и с пояснением то огромное спасибо заранее(в C++ полный 0)
C++ Динамическая память Народ, если кому не сложно помогите переделать вот эту программу со структурами нужно сделать так чтобы для хранения данных она использовала динамическую память вот программа: #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <string.h> struct event{ http://www.cyberforum.ru/cpp-beginners/thread17864.html
Создание электронных часов в графическом режиме Borland C++ C++
Как создать электронные часы в графическом режиме Borland C++ ?
C++ Определить процент элементов с неотрицательными значениями в одномерном массиве
В общем я на первом курсе и в програминге практически не разбираюсь. Пытался выполнить задание, но ничего не получилось. Если знаете, помогите пожалуйста. Заранее спасибо. Задание такое: определить процент эелеметнов а(с индексом i внизу) с неотрицательными значениями в исходном одномерноем массиве а. Ограничения (1<=i<=imax; imax<=10) Вводимые величины - imax, массив а Выводимые велечины -...
C++ Сохранение всех входящих лексем(строк) в порядке поступления http://www.cyberforum.ru/cpp-beginners/thread17291.html
:help: Уже ни первый день бьюсь над ошибкой в подпрограмме транслятора? :wall: Цель подпрограммы: сохранение всех входящих лексем(строк) в порядке поступления. Описание: в динамическом массиве сохраняются только ранее неизвестные лексем. А порядок поступления обеспечивает массив указателей, ссылаясь на динамический массив. Реализация: struct entry { char importance; }; struct entry...
C++ Комментарии к Системе счисления Кто может напишите комментарии к проге,просто по отдельности нет смысла спрашивать потому что очень много что не понятна! Из 2-ой в 10-ую и обратно #include<iostream.h> #include<math.h> #include<conio.h> #include<stdlib.h> #include<stdio.h> #include<string.h> void main(void) подробнее

Показать сообщение отдельно
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
16.12.2008, 06:40     Работа со строками
Код
#include <stdio.h>

#define MAXLINE  1000    /* максимальная длина строки */
#define IN  1            /* внутри пропусков */
#define OUT 0            /* снаружи пропусков */

/* читает строки из файла, а потом записывает их определённым образом 
   первую оставить, вторую - удалить, на месте её - пустая строка и т.д.;
   с перезаписью файла */
main()
{
    void filecopy(FILE *, FILE *); // функции будет использоваться в этой области
    FILE *fp, *tfp;
    char line[MAXLINE], *p;
    int state;
    long i, j, nl;
    const char *fname = "file.txt";
        
    if ((fp = fopen(fname, "rb")) == NULL)
        return 1;
    if ((tfp = tmpfile()) == NULL)
        return 2;
    i = j = nl = 0;
    while ((p = fgets(line, MAXLINE, fp)) != NULL) { // NULL будет когда файл закончится
        nl++; // считает каждую строку
        if (i == 0) { // пока i > 0 вставлять пустые строки
            j++; // сколько пустых строк вставлять на этот раз (должно расти по условию)
            i = j; // ставится верхняя граница, которая снижается до нуля
            state = OUT; // флаг - выводить строку
        } else {
            i--; // сколько ещё пустых строк осталось вывести
            state = IN; // флаг - скрыть строку
        }
        // флаг управляет выводом:
        // что вывести строку с номером или пустую строку с номером    
        fprintf(tfp, "%03d:", nl)
        fprintf(tfp, "%s", (state == OUT ? line : "\r\n"));
    }
    fclose(fp);
    rewind(tfp); // переводит указатель темпового файла в начало, т.к. туда писались строки
    if ((fp = fopen(fname, "wb")) == NULL) // файл может иметь только право на чтение, проверим
        return 3;
    filecopy(tfp, fp);
    fclose(tfp); // стирает темповый файл
    fclose(fp);
    return 0;
}

/* filecopy:  копирование файла ifp в файл ofp */
void filecopy(FILE *ifp, FILE *ofp)
{
    int c;
    
    while ((c = getc(ifp)) != EOF)
        putc(c, ofp);
}
здесь поправил ошибки переносимости и для старых компиляторов и для программ которые не отображают только 0x0A

я смотрел во всех блокнотах которые у меня есть в виндовс и пропустил обычный стандартный
даже в консоли делал type file.txt и всё выводит там без квадратов

насчёт подходящего кода, тебе всё равно придётся делать rewind и remove потом

я чо-то пригляделся что тут
Код
    Cl ffile, tfile;

    if ((tfile.SetCl(tmpfile())) == NULL)
        return 2;
потом с ним

Код
    tfile.rewind();
метод надо создать

потом

Код
    ffile.filecopy(tfile);
тоже нужно чтобы работало

остальное вроде если работает то ничо не менять
в итоге у тебя есть файл, создаётся темповый файл где-то там неважно, потом к нему применяются методы которые годятся для любого файла (их надо описать чтобы они работали) и так может тебе поставят зачёт
 
Текущее время: 20:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru