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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Односвязный, двусвязный список, стек, очередь http://www.cyberforum.ru/cpp-beginners/thread18111.html
В общем, всем кто нуждается. Баггов вы не найдете. Односвязный список #include <iostream> #include <windows.h> using namespace std; class Node {
C++ Помогите !!!! Помогите решить!!!!! Я новичёк http://www.cyberforum.ru/cpp-beginners/thread18069.html
C++ Написать класс Graph
Здравствуйте! Помогите пожалуйста, разобраться с лабой по С/С++ написанной для BC3.1 и преподавателя 1959 г. выпуска (это я к тому, что он без void main() работы не принимает). Прожка такая: #include <iostream.h> #include <stdio.h> #include <conio.h> #include <dos.h> #include <graphics.h> #include <stdlib.h> class Graph {
Найти K-ю цифру в строке натуральных чисел C++
Сразу о главном: дано натуральное K. Найти K-ю цифру в строке натуральных чисел 123456789101112131415.... Что с этим счастьем делать, ума не приложу((( Помогите, пожалуйста, если кто может.
C++ Программа на С http://www.cyberforum.ru/cpp-beginners/thread18057.html
Написать программу, подсчитывающую число прожитых Вами дней. Программа должна предложить Вам ввести дату вашего рождения, текущую дату и выдать сообщение, что Вы живете такой-то день. я это изобразила примерно так: #include<Iostream> using namespace std; int main() { int god, mes, day,run,wer,ryu; cout<<"Vvedite den rogdenia\n"; cin>>run; cout<<"Vvedite mesiac rogdenia\n";
C++ Возможно ли в одном case'е проверить, является ли символ буквой латинского алфавита? помогите,плз разобраться с вопросиком. возможно ли в одном case'е проверить является ли символ буквой латинского алфавита? т.е. сделать аналогично этому: if ((a>='a') && (a<='z')) ? если возможно, то каков синтаксис? всем заранее большое спасибо! ))) подробнее

Показать сообщение отдельно
accept
4821 / 3241 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
16.12.2008, 06:40     Работа со строками
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
#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 потом

я чо-то пригляделся что тут
C++
1
2
3
4
    Cl ffile, tfile;
 
    if ((tfile.SetCl(tmpfile())) == NULL)
        return 2;
потом с ним

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

потом
C++
1
    ffile.filecopy(tfile);
тоже нужно чтобы работало

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