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

вставить слово после определёного символа (в файл) - C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
DEM90
17 / 17 / 1
Регистрация: 06.05.2009
Сообщений: 115
17.05.2009, 01:46     вставить слово после определёного символа (в файл) #1
Надо открыть файл, прочитать из него инфу и вставить после пятого символа какое-то слово (введёное пользователем), если длина первого слова меньше 5, то ничего ен делать...

знаю что надо с помощью функции fseek(); поставить указатель после пятого элемента в файл, но что дальше? Заранее спаисбо за помощь!

Добавлено через 6 часов 36 минут 45 секунд
Вот функция, помогите пожалуйста, он почему-то записывает всё в конец
C++
1
2
3
4
5
6
7
void edit_file(char filename[30], char str[10])
{
  FILE *fp;
  fp=fopen(filename, "a");
  fseek(fp, 5, SEEK_SET);
  fputs(str,fp);
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.05.2009, 01:46     вставить слово после определёного символа (в файл)
Посмотрите здесь:

Скопировать второе слово из каждой строки и вставить их в новый текстовый файл C++
C++ Определить слово с наибольшим вхождением заданного символа
После пятого символа первой строки вставить вторую C++
C++ Дан текстовый файл ( определить слово с наибольшим количеством букв и вставить его на начало и конец строки)
Вставить строку перед каждым вхождением символа. C++
В тексте после указанного символа вставить подстроку C++
В тексте после указанного символа вставить подстроку C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vourhey
Почетный модератор
6470 / 2245 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
17.05.2009, 01:56     вставить слово после определёного символа (в файл) #2
Если я правильно помню, "a" - append всегда ставит указатель в конец файла на добавление. Используй "w".
DEM90
17 / 17 / 1
Регистрация: 06.05.2009
Сообщений: 115
17.05.2009, 02:01  [ТС]     вставить слово после определёного символа (в файл) #3
но ведь "w" создаёт файл, а если такой есть, то заменяет его.
Vourhey
Почетный модератор
6470 / 2245 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
17.05.2009, 02:07     вставить слово после определёного символа (в файл) #4
OK. значит сделай "a" а потом rewind. Хотя, на операциях он вроде его автоматически в конец файла будет позиционировать.
Новичёк
0 / 0 / 0
Регистрация: 16.05.2009
Сообщений: 8
17.05.2009, 02:11     вставить слово после определёного символа (в файл) #5
C++
1
2
3
4
5
6
7
8
void edit_file(char filename[30], char str[10])
{
  FILE *fp;
    fp=fopen(filename, "a");
    rewind(fp);
    fseek(fp, 5, SEEK_SET);
  fputs(str,fp);
}
сделал так, но всё равно добавляет в конец
DEM90
17 / 17 / 1
Регистрация: 06.05.2009
Сообщений: 115
17.05.2009, 02:13  [ТС]     вставить слово после определёного символа (в файл) #6
У тоже сделал так, но ничего
Vourhey
Почетный модератор
6470 / 2245 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
17.05.2009, 02:15     вставить слово после определёного символа (в файл) #7
Чтобы вставить в середину файла тебе его нужно полностью переписать, как всегда. Читать ты можешь откуда угодно.

Добавлено через 1 минуту 55 секунд
"ничего" потому писать можно только в конец файла. Читать - произвольно. Сначала тебе нужно установить позицию, чтобы прочитать есть ли у тебя там слово длиной пять, а потом перезаписать в случае его наличия. Файл. Полностью.

P. S. не...rewind я тебе сказал не для записи, а для чтения и проверки. Записать ты сможешь только в конец всегда.
DEM90
17 / 17 / 1
Регистрация: 06.05.2009
Сообщений: 115
17.05.2009, 02:19  [ТС]     вставить слово после определёного символа (в файл) #8
Vourhey, ясно, постараюсь переписать... еще раз спасибо
Vourhey
Почетный модератор
6470 / 2245 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
17.05.2009, 02:20     вставить слово после определёного символа (в файл) #9
Просто запомни, что запись всегда в конец, только читать ты можешь произвольно.
DEM90
17 / 17 / 1
Регистрация: 06.05.2009
Сообщений: 115
17.05.2009, 03:12  [ТС]     вставить слово после определёного символа (в файл) #10
C++
1
2
3
4
5
6
7
8
9
10
11
12
    char strin[100];
    fread(&strin, sizeof(strin), sizeof(fp), fp);
  cout << "Byl takoy text: \n" << strin << "\n";
    int prov;
    for(int i=0;i<n;i++)
    {
        if(strin[i]==" ")
        {
            prov=0;
            cout <<"QQQQ";
        }
    }
вот кусок кода, а он выдаёт ошибку:
error C2040: '==' : 'int' differs in levels of indirection from 'const char [2]'
что тут не так?
Gravity
 Аватар для Gravity
556 / 550 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
17.05.2009, 03:27     вставить слово после определёного символа (в файл) #11
Код
if(strin[i]==" ")
Нельзя сравнивать символ со строкой. Правильно так
Код
if(strin[i] == ' ')
DEM90
17 / 17 / 1
Регистрация: 06.05.2009
Сообщений: 115
17.05.2009, 18:46  [ТС]     вставить слово после определёного символа (в файл) #12
Большое спасибо! Нда... С++ действительно намного сложнее чем РНР

Добавлено через 2 минуты 11 секунд
Но всё же еще один вопрос, он мне в консоль выводит текст файла (так и надо) и сразу за ним: "|Ш*5" (без кавычек), хотя такой строчки и близко нету...

Добавлено через 23 минуты 13 секунд
А сейчас она стала выводить только 1 символ из файла хотя там ничего не менял... ну и еще я создаю новый файл и засовываю информацию в него, но он в файл записывает какую-то ерунду...
Вот полный код:
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
#include <conio.h>
#include <stdio.h>
#include <iostream>
using namespace std;
 
void editfile(char filename[30], char str[1], int n, char filename2[30])
{
    n--;
  FILE *fp;
    fp=fopen(filename, "r");
    rewind(fp);
    char strin[100];
    fread(strin, sizeof(strin), sizeof(fp), fp);
  cout << "Byl takoy text: \n" << strin << "\n";
    int prov;
    for(int i=0;i<n;i++)
    {
        if(strin[i]==' ')
        {
            prov=0;
        }
    }
    
    if(prov!=0)
    {
        strin[n] = str[0];
    }
 
    fclose(fp);
    FILE *fp2;
    fp2 = fopen(filename2, "w");
    fwrite(strin, 30, 30, fp2);
    fclose(fp);
    fclose(fp2);
}
 
 
int main(void)
{
    int n;
    cin >> n;
    editfile("file11.txt", "@", n, "file2.txt");
  system("PAUSE");
}
Добавлено через 14 часов 48 минут 43 секунды
Неужели никто не знает
Просто работало всё норм, а потом резко стало выдавать только один символ
DEM90
17 / 17 / 1
Регистрация: 06.05.2009
Сообщений: 115
19.05.2009, 03:20  [ТС]     вставить слово после определёного символа (в файл) #13
Сколько не мучаюсь, никак ен могу найти ошибку Может всё таки кто-нибудь поможет? Будут очень признателен
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.05.2009, 08:47     вставить слово после определёного символа (в файл)
Еще ссылки по теме:

C++ Запись в файл: после каждой записи вставить символ
C (СИ) - Ввести строку символов.И После каждой 2 Буквы ( Именно буквы ) Вставить слово C++
Вставить строку перед каждым вхождением заданного символа C++
C++ Строка: После каждого символа А вставить пробел, и подсчитать количество символов B, стоящих между + и -
C++ После 1-го символа каждого слова вставить последовательность символов

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

Или воспользуйтесь поиском по форуму:
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16949 / 5354 / 330
Регистрация: 30.03.2009
Сообщений: 14,396
Записей в блоге: 26
19.05.2009, 08:47     вставить слово после определёного символа (в файл) #14
1. В fread и fwrite третьим параметром надо подавать единицу
2. Ты два раза делаешь fclose (fp);
3. В 26-й строке ты просто переписываешь один символ в строке. Вставка не так делается. Просто в Си вообще нет понятия строки, а если работаешь с массивом char'ов, то все операции надо ручками делать. Лучше используй string

И опиши в чём выражаештся что не работает. Как запускаешь, куда нажимаешь, что выводится и т.п.
Yandex
Объявления
19.05.2009, 08:47     вставить слово после определёного символа (в файл)
Ответ Создать тему
Опции темы

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