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

Создать файл и внести в него последовательность символов. - C++

Восстановить пароль Регистрация
 
Sandr12
0 / 0 / 0
Регистрация: 16.02.2010
Сообщений: 27
28.02.2010, 18:53     Создать файл и внести в него последовательность символов. #1
Создать файл и внести в него последовательность символов. Вывести из этого файла в результирующий файл символы в обратной последовательности(зеркальное отображение).
Visual C++

вот пробовал по примеру что-то сделать...но совсем не то,не получается
помогите пожалуйста отредактировать код.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include "stdafx.h"
#include <stdio.h>
 
int main ()
{
   FILE * pFile;
   int n;
   char simvoly [100];
 
   pFile = fopen ("simvoly.txt","w");
   for (n=0 ; n<1; n++)
   {
     puts ("vvedite simvoly: ");
     gets (simvoly);
     fprintf (pFile, "simvoly:%d %-10.10s\n",n,simvoly);
   }
   fclose (pFile);
 
   return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.02.2010, 18:53     Создать файл и внести в него последовательность символов.
Посмотрите здесь:

Создать двоичный файл и записать в него 15 чисел C++
[B]создать файл и записать в него структурированные данные.[/B] C++
C++ создать файл и записать в него структурированные данные
C++ создать новый двоичный файл и записать в него матрицу
Создать новый файл, удалив заданную последовательность символов из существующего. C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
28.02.2010, 19:02     Создать файл и внести в него последовательность символов. #2
n неинициализирована
убери цикл или измени на правильный
тебе удобнее будет юзать fputs
Sandr12
0 / 0 / 0
Регистрация: 16.02.2010
Сообщений: 27
28.02.2010, 19:06  [ТС]     Создать файл и внести в него последовательность символов. #3
мне обязательно надо с fprintf...
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
28.02.2010, 19:09     Создать файл и внести в него последовательность символов. #4
тогда убери из форматной строки все лишнее и оставь только строку.
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,270
28.02.2010, 19:19     Создать файл и внести в него последовательность символов. #5
Лишнее это всё, что касается n, которая тут даром не будет нужна после того, как ты уберёшь цикл.
n это счётчик цикла, а у тебя он повторяется только один раз, следовательно он вообще не нужен

Дальше какоё-то непонятное форматирование, что значит -10.10? Откуда сдул?
Sandr12
0 / 0 / 0
Регистрация: 16.02.2010
Сообщений: 27
01.03.2010, 22:29  [ТС]     Создать файл и внести в него последовательность символов. #6
в общем ничего не понял

это я код взял с какого-то английского сайта...пробовал переделать под свою задачу

Добавлено через 5 минут
ну вот то что связано с n убрал.
а как теперь сделать зеркальное отображение?

если не затруднит,напишите пожалуйста код со всеми комментариями.
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
05.03.2010, 04:53     Создать файл и внести в него последовательность символов. #7
Цитата Сообщение от Sandr12
Создать файл и внести в него последовательность символов. Вывести из этого файла в результирующий файл символы в обратной последовательности(зеркальное отображение).
нужен стек, так как непрерывный кусок в памяти для всего файла может не найтись

было дело

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
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
struct node {
    char *p;
    struct node *next;
};
 
struct stack {
    struct node *head;
};
 
void CreateStack(struct stack *ps);
int PushStack(struct stack *ps, struct node *pn);
int PopStack(struct stack *ps, struct node *pn);
 
char *MemDupLine(const char *l, size_t size);
void MemRevLine(char *l, size_t n);
 
enum {
    MAXLINE = 1000 /* maximal length of a line (equiv. to int) */
};
 
int main(void) /* C89 ANSI */
{
    char line[MAXLINE];
    int c, i;
    int maxlength, lastlength;
    
    struct stack s;
    struct node n;
    
    CreateStack(&s);
    
    maxlength = sizeof line;
    lastlength = 0;
    
    i = 0;
    
    do {
    
        if ((c = getchar()) != EOF)
            line[i++] = c;
    
        if (i >= maxlength || (c == EOF && i > 0)) {
        
            if (c == EOF && i > 0)
                lastlength = i;
        
            n.p = MemDupLine(line, i);
            
            MemRevLine(n.p, i);
            
            if(PushStack(&s, &n) == 0) {
                fprintf(stderr, "error: not enough memory" "\n");
                exit(EXIT_FAILURE);
            }    
            
            i = 0;
        
        }
    
    } while (c != EOF);
    
    while (PopStack(&s, &n) != 0) {
        
        if (lastlength == 0)
            fwrite(n.p, maxlength, 1, stdout);
        else {
            fwrite(n.p, lastlength, 1, stdout);
            lastlength = 0;
        }
        
        free(n.p);
    
    }    
    
    exit(EXIT_SUCCESS);
}
 
/* MemRevLine:  reverses n bytes in line l  */
void MemRevLine(char *l, size_t n)
{
    char *end;
    int c;
    
    end = l+n-1;
 
    for ( ; l < end; l++, end--)
        c = *l, *l = *end, *end = c;
}
 
/* MemDupLine:  duplicates size bytes of line l */
char *MemDupLine(const char *l, size_t size)
{
    char *p;
    
    p = (char *) malloc(size);
    
    if (p != NULL);
        memcpy(p, l, size);
    
    return p;
}
 
/* CreateStack:  creates a clear stack ps */
void CreateStack(struct stack *ps)
{
    ps->head = NULL;
}
 
/* PushStack:  pushes to a stack ps a node pn;
               returns 1 or 0 */
int PushStack(struct stack *ps, struct node *pn)
{
    struct node *tmp;
    
    tmp = (struct node *) malloc(sizeof(struct node));
    
    if (tmp == NULL)
        return 0;
    
    *tmp = *pn;
    tmp->next = ps->head;
    ps->head = tmp;
    
    return 1;
}
 
/* PopStack:  pops from a stack ps a node pn;
              returns 1 or 0 */
int PopStack(struct stack *ps, struct node *pn)
{
    struct node *tmp;
    
    if (ps->head == NULL)
        return 0;
    
    tmp = ps->head;
    *pn = *tmp;
    ps->head = tmp->next;    
    free(tmp);
    
    return 1;
}


Добавлено через 2 минуты
тут ввод с клавиатуры нужно заменить на ввод из файла
kuroiryuu
 Аватар для kuroiryuu
311 / 295 / 23
Регистрация: 05.11.2009
Сообщений: 698
Завершенные тесты: 2
05.03.2010, 14:19     Создать файл и внести в него последовательность символов. #8
немного извратно сделано, но работает...
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
int main ()
{
    setlocale(LC_ALL,"Russian");
    FILE * pFile;
    errno_t err;
    const int size = 256;
    const char* path = "d:\\simvoly.txt";
    char simvoly[size];
 
    err = fopen_s(&pFile, path, "w");
    if (err == 0)
    {
        while(true)
        {
            puts ("Введите символы: ");
            gets_s(simvoly, size);
            fprintf (pFile, "%s", simvoly);
            puts ("Желаете еще ввсести символы? [Д/Н]");
            char ch[2];
            gets_s(ch, 2);
            if (ch[0] != 'Д' || ch[0] != 'д')
                break;
        }
        fclose(pFile);
    }
    
    strcpy_s(simvoly, size, "\0");
    
    err = fopen_s(&pFile, path, "r");
    char buff[size];
    if (err == 0)
    {
        while(!feof(pFile))
        {
            char ch[2] = {'\0', '\0'};
            fgets(buff, size, pFile);
        }
        fclose(pFile);
    }
    for (int i = 0; i < (int)strlen(buff); i++)
    {
        char tmp[size];
        char ch[2] = {buff[i], '\0'};
        strcpy_s(tmp, size, simvoly);
        strcpy_s(simvoly, size, ch);
        strcat_s(simvoly, size, tmp);
    }
 
    printf("\nРезультат: %s\n",simvoly);
 
    return 0;
}
Sandr12
0 / 0 / 0
Регистрация: 16.02.2010
Сообщений: 27
19.03.2010, 01:34  [ТС]     Создать файл и внести в него последовательность символов. #9
kuroiryuu, а какие библиотеки подключать?

kuroiryuu, что-то нифига не получается...
Sandr12
0 / 0 / 0
Регистрация: 16.02.2010
Сообщений: 27
25.03.2010, 01:36  [ТС]     Создать файл и внести в него последовательность символов. #10
ну подскажите же кто-нибудь!!!
kuroiryuu
 Аватар для kuroiryuu
311 / 295 / 23
Регистрация: 05.11.2009
Сообщений: 698
Завершенные тесты: 2
25.03.2010, 10:05     Создать файл и внести в него последовательность символов. #11
stdio.h
local.h для setlocale
string.h
Sandr12
0 / 0 / 0
Регистрация: 16.02.2010
Сообщений: 27
30.03.2010, 02:58  [ТС]     Создать файл и внести в него последовательность символов. #12
мда...

Добавлено через 11 минут
kuroiryuu, все равно ошибка....
c:\microsoft visual studio\myprojects\4e\4e.cpp(59) : fatal error C1010: unexpected end of file while looking for precompiled header directive
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.04.2010, 13:52     Создать файл и внести в него последовательность символов.
Еще ссылки по теме:

C++ Создать файл и добавить в него текст
C++ создать файл 1.part и записать в него первые x элементов массива. После чего, создать второй файл 2.part, куда записать оставшиеся в массиве элементы.
Файл: Создать файл и записать в него обратные натуральные числа 1,1/2,...1/n. C++

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

Или воспользуйтесь поиском по форуму:
Sandr12
0 / 0 / 0
Регистрация: 16.02.2010
Сообщений: 27
07.04.2010, 13:52  [ТС]     Создать файл и внести в него последовательность символов. #13
ну напишите же что-нибудь...
Yandex
Объявления
07.04.2010, 13:52     Создать файл и внести в него последовательность символов.
Ответ Создать тему
Опции темы

Текущее время: 07:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru